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