mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-09-06 12:03:41 +02:00
another fix
This commit is contained in:
parent
779c446815
commit
023bc185cf
1 changed files with 6 additions and 51 deletions
57
.github/workflows/flatpak-build.yml
vendored
57
.github/workflows/flatpak-build.yml
vendored
|
@ -1,58 +1,39 @@
|
||||||
name: Сборка Flatpak для AyuGram
|
name: Сборка Flatpak для AyuGram
|
||||||
|
|
||||||
# Условия запуска пайплайна
|
|
||||||
on:
|
on:
|
||||||
# Позволяет запускать этот воркфлоу вручную со страницы Actions
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-flatpak:
|
build-flatpak:
|
||||||
# Название задачи, которое будет отображаться в интерфейсе
|
|
||||||
name: Сборка и упаковка Flatpak
|
name: Сборка и упаковка Flatpak
|
||||||
|
|
||||||
# Указываем, что задача должна выполняться на вашем self-hosted раннере
|
|
||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# Шаг 1: Клонирование репозитория
|
|
||||||
# Скачиваем исходный код текущей ветки (dev) вместе со всеми подмодулями (--recursive)
|
|
||||||
- name: Клонирование репозитория
|
- name: Клонирование репозитория
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'recursive'
|
fetch-depth: 0
|
||||||
clean: true
|
clean: true
|
||||||
|
|
||||||
# Шаг 2: Установка системных зависимостей и Flatpak SDK
|
- name: Инициализация подмодулей
|
||||||
# На вашем Fedora-раннере будут установлены все необходимые утилиты для сборки
|
run: |
|
||||||
|
git submodule update --init --recursive --force
|
||||||
|
git submodule foreach --recursive 'git checkout HEAD || git checkout master || git checkout main || true'
|
||||||
|
|
||||||
- name: Установка зависимостей и Flatpak SDK
|
- name: Установка зависимостей и Flatpak SDK
|
||||||
run: |
|
run: |
|
||||||
# Устанавливаем flatpak, flatpak-builder и pip с помощью системного менеджера пакетов dnf
|
|
||||||
# Флаг -y необходим для автоматического подтверждения установки
|
|
||||||
sudo dnf install -y flatpak flatpak-builder python3-pip
|
sudo dnf install -y flatpak flatpak-builder python3-pip
|
||||||
|
|
||||||
# Устанавливаем poetry, который требуется для скрипта подготовки
|
|
||||||
pip3 install poetry
|
pip3 install poetry
|
||||||
|
|
||||||
# Устанавливаем GNOME SDK версии 48, который указан как зависимость в вашем манифесте
|
|
||||||
# Флаг --noninteractive важен для автоматизации, чтобы не запрашивать подтверждение
|
|
||||||
flatpak install -y --noninteractive org.gnome.Sdk//48
|
flatpak install -y --noninteractive org.gnome.Sdk//48
|
||||||
|
|
||||||
# Шаг 3: Подготовка библиотек Telegram Desktop
|
|
||||||
# Запускаем скрипт подготовки, как указано в ручной инструкции
|
|
||||||
- name: Подготовка библиотек
|
- name: Подготовка библиотек
|
||||||
run: ./Telegram/build/prepare/linux.sh
|
run: ./Telegram/build/prepare/linux.sh
|
||||||
|
|
||||||
# Шаг 4: Сборка бинарного файла AyuGram с помощью Docker
|
|
||||||
# Этот шаг в точности повторяет команду из документации, но с улучшениями для CI/CD
|
|
||||||
- name: Сборка бинарного файла AyuGram
|
- name: Сборка бинарного файла AyuGram
|
||||||
env:
|
env:
|
||||||
# Настоятельно рекомендуется хранить API ключи в секретах репозитория
|
|
||||||
# GitHub -> Settings -> Secrets and variables -> Actions -> New repository secret
|
|
||||||
TDESKTOP_API_ID: ${{ secrets.TDESKTOP_API_ID }}
|
TDESKTOP_API_ID: ${{ secrets.TDESKTOP_API_ID }}
|
||||||
TDESKTOP_API_HASH: ${{ secrets.TDESKTOP_API_HASH }}
|
TDESKTOP_API_HASH: ${{ secrets.TDESKTOP_API_HASH }}
|
||||||
run: |
|
run: |
|
||||||
# Запускаем сборку внутри Docker-контейнера centos_env
|
|
||||||
# Флаг -it убран, так как он для интерактивных сессий и не нужен в CI
|
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
-u $(id -u) \
|
-u $(id -u) \
|
||||||
-v "$PWD:/usr/src/tdesktop" \
|
-v "$PWD:/usr/src/tdesktop" \
|
||||||
|
@ -61,55 +42,29 @@ jobs:
|
||||||
-D TDESKTOP_API_ID=${TDESKTOP_API_ID} \
|
-D TDESKTOP_API_ID=${TDESKTOP_API_ID} \
|
||||||
-D TDESKTOP_API_HASH=${TDESKTOP_API_HASH}
|
-D TDESKTOP_API_HASH=${TDESKTOP_API_HASH}
|
||||||
|
|
||||||
# Шаг 5: Подготовка директории для сборки Flatpak
|
|
||||||
# Создаем временную директорию и копируем в нее все необходимые артефакты
|
|
||||||
- name: Подготовка директории для сборки Flatpak
|
- name: Подготовка директории для сборки Flatpak
|
||||||
run: |
|
run: |
|
||||||
# Создаем директорию для сборки
|
|
||||||
mkdir ayugram-flatpak-build
|
mkdir ayugram-flatpak-build
|
||||||
|
|
||||||
# Копируем скомпилированный бинарный файл
|
|
||||||
cp out/Release/AyuGram ayugram-flatpak-build/
|
cp out/Release/AyuGram ayugram-flatpak-build/
|
||||||
|
|
||||||
# Копируем все файлы для Flatpak (манифест, иконки, desktop-файл и т.д.)
|
|
||||||
cp -r docs/assets/flatpak-files/* ayugram-flatpak-build/
|
cp -r docs/assets/flatpak-files/* ayugram-flatpak-build/
|
||||||
|
|
||||||
# Шаг 6: Динамическое определение версии приложения
|
|
||||||
# Извлекаем версию из metainfo.xml, чтобы имя файла было всегда актуальным
|
|
||||||
- name: Определение версии приложения
|
- name: Определение версии приложения
|
||||||
id: get_version
|
id: get_version
|
||||||
run: |
|
run: |
|
||||||
# Ищем строку с версией в XML-файле, извлекаем ее с помощью sed и записываем в переменную окружения GITHUB_ENV
|
|
||||||
APP_VERSION=$(grep '<release version=' docs/assets/flatpak-files/usr/share/metainfo/com.ayugram.desktop.metainfo.xml | sed -n 's/.*version="\([^"]*\)".*/\1/p')
|
APP_VERSION=$(grep '<release version=' docs/assets/flatpak-files/usr/share/metainfo/com.ayugram.desktop.metainfo.xml | sed -n 's/.*version="\([^"]*\)".*/\1/p')
|
||||||
echo "APP_VERSION=${APP_VERSION}" >> $GITHUB_ENV
|
echo "APP_VERSION=${APP_VERSION}" >> $GITHUB_ENV
|
||||||
echo "Найдена версия: ${APP_VERSION}"
|
echo "Найдена версия: ${APP_VERSION}"
|
||||||
|
|
||||||
# Шаг 7: Сборка Flatpak пакета
|
|
||||||
# Основной шаг, где происходит магия flatpak-builder
|
|
||||||
- name: Сборка Flatpak пакета
|
- name: Сборка Flatpak пакета
|
||||||
run: |
|
run: |
|
||||||
# Очищаем предыдущие артефакты сборки на всякий случай
|
|
||||||
rm -rf repo build-dir
|
rm -rf repo build-dir
|
||||||
|
|
||||||
# Запускаем сборку. --disable-rofiles-fuse добавлен превентивно для избежания проблем с правами
|
|
||||||
# --force-clean гарантирует чистую сборку
|
|
||||||
flatpak-builder --repo=repo --force-clean --disable-rofiles-fuse build-dir com.ayugram.desktop.yml
|
flatpak-builder --repo=repo --force-clean --disable-rofiles-fuse build-dir com.ayugram.desktop.yml
|
||||||
|
|
||||||
# Создаем единый .flatpak файл для распространения
|
|
||||||
# Используем переменную с версией, полученную на предыдущем шаге
|
|
||||||
flatpak build-bundle repo ayugram-desktop-${{ env.APP_VERSION }}.flatpak com.ayugram.desktop
|
flatpak build-bundle repo ayugram-desktop-${{ env.APP_VERSION }}.flatpak com.ayugram.desktop
|
||||||
|
|
||||||
# Указываем рабочую директорию для выполнения команд этого шага
|
|
||||||
working-directory: ./ayugram-flatpak-build
|
working-directory: ./ayugram-flatpak-build
|
||||||
|
|
||||||
# Шаг 8: Загрузка артефакта
|
|
||||||
# Сохраняем собранный .flatpak файл в артефактах сборки GitHub
|
|
||||||
- name: Загрузка артефакта
|
- name: Загрузка артефакта
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
# Имя артефакта в интерфейсе GitHub
|
|
||||||
name: ayugram-flatpak-package
|
name: ayugram-flatpak-package
|
||||||
# Путь к файлу, который нужно загрузить. Используем маску, чтобы не зависеть от точной версии
|
|
||||||
path: ayugram-flatpak-build/ayugram-desktop-*.flatpak
|
path: ayugram-flatpak-build/ayugram-desktop-*.flatpak
|
||||||
# Время хранения артефакта (15 дней)
|
|
||||||
retention-days: 15
|
retention-days: 15
|
Loading…
Add table
Reference in a new issue