AyuGramDesktop/.github/workflows/flatpak-build.yml
2025-07-23 11:55:42 +03:00

163 lines
No EOL
7.1 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 chown -R $USER:$USER . || true # Изменяем владельца файлов
sudo rm -rf ./* .ccache .git* || true # Явное удаление .ccache
sudo find . -path . -prune -o -exec rm -rf {} + || 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"
# Текущая дата в формате YYYY-MM-DD
CURRENT_DATE=$(date +%Y-%m-%d)
echo "Добавляю release ${{ env.APP_VERSION }} ($CURRENT_DATE) в $METAINFO_FILE"
# Формируем блок release одной строкой (избегаем проблем с переносами внутри XML)
NEW_RELEASE=" <release version=\"${{ env.APP_VERSION }}\" date=\"${CURRENT_DATE}\"><description><p>Автоматическая сборка Flatpak. Синхронизировано с upstream-тегом ${{ env.LATEST_TAG }}.</p></description></release>"
# Вставляем NEW_RELEASE непосредственно перед закрывающим тегом </releases>
# Используем '|' как разделитель, чтобы избежать экранирования '/'.
sed -i "s|</releases>|${NEW_RELEASE}</releases>|" "$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: Cache ccache data
uses: actions/cache@v4
id: cache-ccache
with:
path: .ccache
key: ${{ runner.os }}-ccache-${{ github.sha }}
restore-keys: |
${{ runner.os }}-ccache-
- name: Build AyuGram binary
env:
TDESKTOP_API_ID: ${{ secrets.TDESKTOP_API_ID }}
TDESKTOP_API_HASH: ${{ secrets.TDESKTOP_API_HASH }}
CCACHE_DIR: ${{ runner.tool_cache }}/ccache
CCACHE_BASEDIR: ${{ github.workspace }}
CCACHE_MAXSIZE: 5G
CCACHE_LOGFILE: /ccache/ccache.log # optional for debug
run: |
mkdir -p .ccache
sudo chmod -R 777 .ccache
docker run --rm \
--cpus="3" \
-v "$PWD:/usr/src/tdesktop" \
-v "${CCACHE_DIR}:/ccache" \
ghcr.io/telegramdesktop/tdesktop/centos_env:latest \
/bin/bash -c "\
dnf install -y ccache && \
export PATH=\"/usr/lib64/ccache:\$PATH\" && \
export CCACHE_DIR=/ccache \
export CCACHE_BASEDIR=/usr/src/tdesktop \
export CCACHE_COMPRESS=1 \
/usr/src/tdesktop/Telegram/build/docker/centos_env/build.sh \
-D TDESKTOP_API_ID=${TDESKTOP_API_ID} \
-D TDESKTOP_API_HASH=${TDESKTOP_API_HASH} \
-D USE_CCACHE=ON \
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache && \
ccache -s && \
echo 'ccache log: ' && tail -20 /ccache/ccache.log || true"
- 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