mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-09-08 13:03:34 +02:00
163 lines
No EOL
7.1 KiB
YAML
163 lines
No EOL
7.1 KiB
YAML
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 |