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 '//a \ \ \

Автоматическая сборка Flatpak. Синхронизировано с upstream-тегом ${{ env.LATEST_TAG }}.

\
\
' "$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