mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-09-07 20:43:12 +02:00
135 lines
No EOL
5.5 KiB
YAML
135 lines
No EOL
5.5 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 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 |