AyuGramDesktop/.github/workflows/flatpak-build.yml
2025-07-22 18:51:56 +03:00

135 lines
No EOL
5.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Build AyuGram Flatpak
on:
workflow_dispatch:
jobs:
build-and-release:
name: Build and Release Flatpak
runs-on: self-hosted
permissions:
contents: write
steps:
- name: Force clean workspace
run: |
echo "Принудительная очистка рабочей директории..."
sudo rm -rf ./* || true
sudo rm -rf ./.git* || true
- name: Checkout repository with submodules
uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0
- name: Sync with upstream repository (AyuGram)
run: |
git remote add upstream https://github.com/AyuGram/AyuGramDesktop.git
git fetch upstream
git checkout dev
echo "Слияние изменений из upstream/dev..."
git merge upstream/dev --no-edit
git push origin dev
- name: Get latest version and create release tag
id: get_version
run: |
LATEST_TAG=$(git describe --tags --abbrev=0 upstream/dev)
APP_VERSION=${LATEST_TAG#v}
TIMESTAMP=$(date +%Y%m%d%H%M%S)
RELEASE_TAG="flatpak-${LATEST_TAG}-${TIMESTAMP}"
echo "Последний тег AyuGram: ${LATEST_TAG}"
echo "Версия приложения: ${APP_VERSION}"
echo "Тег релиза для этого форка: ${RELEASE_TAG}"
echo "APP_VERSION=${APP_VERSION}" >> $GITHUB_ENV
echo "LATEST_TAG=${LATEST_TAG}" >> $GITHUB_ENV
echo "RELEASE_TAG=${RELEASE_TAG}" >> $GITHUB_ENV
echo "TIMESTAMP=${TIMESTAMP}" >> $GITHUB_ENV
- name: Update metainfo.xml with new release
run: |
# Путь к файлу метаданных
METAINFO_FILE="docs/assets/flatpak-files/usr/share/metainfo/com.ayugram.desktop.metainfo.xml"
# Получаем текущую дату в нужном формате
CURRENT_DATE=$(date +%Y-%m-%d)
echo "Обновление $METAINFO_FILE для версии ${{ env.APP_VERSION }} от $CURRENT_DATE"
sed -i '/<releases>/a \
<release version="${{ env.APP_VERSION }}" date="'"$CURRENT_DATE"'">\
<description>\
<p>Автоматическая сборка Flatpak. Синхронизировано с upstream-тегом ${{ env.LATEST_TAG }}.</p>\
</description>\
</release>' "$METAINFO_FILE"
echo "Файл metainfo.xml успешно обновлен."
- name: Verify that required secrets are set
run: |
if [ -z "${{ secrets.TDESKTOP_API_ID }}" ] || [ -z "${{ secrets.TDESKTOP_API_HASH }}" ]; then
echo "::error:: Обязательные секреты TDESKTOP_API_ID и/или TDESKTOP_API_HASH не найдены или пусты."
exit 1
else
echo "Секреты успешно найдены."
fi
- name: Install dependencies and Flatpak SDK
run: |
sudo dnf install -y flatpak flatpak-builder python3-pip
pip3 install --user poetry
echo "$HOME/.local/bin" >> $GITHUB_PATH
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y --noninteractive org.gnome.Sdk//48
flatpak install --user -y --noninteractive org.gnome.Platform//48
- name: Cache TDesktop Dependencies
id: cache-tdesktop-deps
uses: actions/cache@v4
with:
path: Telegram/ThirdParty
key: ${{ runner.os }}-tdeps-${{ hashFiles('Telegram/build/prepare/dependencies.txt') }}
- name: Prepare libraries
run: ./Telegram/build/prepare/linux.sh
- name: Build AyuGram binary
env:
TDESKTOP_API_ID: ${{ secrets.TDESKTOP_API_ID }}
TDESKTOP_API_HASH: ${{ secrets.TDESKTOP_API_HASH }}
run: |
docker run --rm \
--cpus="3" \
-u $(id -u):$(id -g) \
-v "$PWD:/usr/src/tdesktop" \
ghcr.io/telegramdesktop/tdesktop/centos_env:latest \
/usr/src/tdesktop/Telegram/build/docker/centos_env/build.sh \
-D TDESKTOP_API_ID=${TDESKTOP_API_ID} \
-D TDESKTOP_API_HASH=${TDESKTOP_API_HASH}
- name: Prepare Flatpak build directory
run: |
mkdir -p ayugram-flatpak-build
cp out/Release/AyuGram ayugram-flatpak-build/
cp -r docs/assets/flatpak-files/* ayugram-flatpak-build/
- name: Build Flatpak package
working-directory: ./ayugram-flatpak-build
run: |
rm -rf repo build-dir
flatpak-builder --repo=repo --force-clean --disable-rofiles-fuse build-dir com.ayugram.desktop.yml
flatpak build-bundle repo ayugram-desktop-${{ env.APP_VERSION }}.flatpak com.ayugram.desktop
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.RELEASE_TAG }}
name: "AyuGram ${{ env.APP_VERSION }} Flatpak (сборка ${{ env.TIMESTAMP }})"
body: |
Автоматическая сборка Flatpak для AyuGram версии ${{ env.LATEST_TAG }}.
Собрано из коммита: ${{ github.sha }}
[Оригинальный релиз на GitHub](https://github.com/AyuGram/AyuGramDesktop/releases/tag/${{ env.LATEST_TAG }})
files: ayugram-flatpak-build/ayugram-desktop-${{ env.APP_VERSION }}.flatpak