name: Сборка Projman on: [push] jobs: build: runs-on: tcl-tk-builder steps: - name: Клонирование репозитория run: | git clone "${{ vars.main_url }}${{ gitea.repository }}.git" . echo "Ревизия: $(git rev-parse --short HEAD)" - name: Сборка пакетов run: | echo "=== Сборка DEB пакета ===" cd debian ./build-deb-projman.sh echo "=== Сборка OpenBSD пакета ===" cd ../openbsd ./build-package-bsd.sh echo "=== Список созданных файлов ===" cd .. find ../ -name "*.deb" -o -name "*.tgz" -o -name "*.changes" | xargs ls -la - name: Извлечение версии id: version_info run: | VERSION=$(grep "Version" projman.tcl | head -1 | grep -o '[0-9.]\+[a-zA-Z0-9]*') RELEASE=$(grep "# Release" projman.tcl | tail -1 | awk '{print $NF}') TAG_NAME="${GITEA_REF#refs/tags/}" echo "VERSION=${VERSION}" >> $GITEA_ENV echo "RELEASE=${RELEASE}" >> $GITEA_ENV echo "TAG_NAME=${TAG_NAME}" >> $GITEA_ENV echo "Версия: $VERSION" echo "Ревизия: $RELEASE" echo "Тег: $TAG_NAME" - name: Создание релиза run: | echo "=== Создание релиза $TAG_NAME ===" # Ищем основной DEB пакет (бинарный) DEB_FILE=$(find . -name "*_amd64.deb" -type f | head -1) TGZ_FILE=$(find . -name "*.tgz" -type f | head -1) echo "DEB файл: $DEB_FILE" echo "TGZ файл: $TGZ_FILE" # Создаем тело релиза RELEASE_BODY="Версия: $VERSION Ревизия: $RELEASE Дата сборки: $(date) Доступные пакеты: - $(basename "$DEB_FILE") (Debian/Ubuntu) - $(basename "$TGZ_FILE") (OpenBSD) Собран из ревизии: $(git rev-parse --short HEAD)" # Создаем релиз RESPONSE=$(curl -s -X POST \ -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ -H "Content-Type: application/json" \ -d '{ "tag_name": "'"$TAG_NAME"'", "name": "Projman '"$VERSION"'", "body": "'"$(echo "$RELEASE_BODY" | sed ':a;N;$!ba;s/\n/\\n/g')"'", "draft": false, "prerelease": false }' \ "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases") echo "Ответ API: $RESPONSE" # Извлекаем ID релиза if echo "$RESPONSE" | grep -q '"id"'; then REL_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | cut -d: -f2) echo "ID релиза: $REL_ID" echo "REL_ID=$REL_ID" >> $GITEA_ENV else echo "Ошибка создания релиза!" exit 1 fi - name: Загрузка DEB пакета if: env.REL_ID != '' run: | DEB_FILE=$(find . -name "*_amd64.deb" -type f | head -1) if [ -f "$DEB_FILE" ]; then echo "Загружаем DEB: $(basename "$DEB_FILE")" curl -v --user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ --upload-file "$DEB_FILE" \ "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets?name=$(basename "$DEB_FILE")" else echo "DEB файл не найден!" find . -name "*.deb" -type f fi - name: Загрузка OpenBSD пакета if: env.REL_ID != '' run: | TGZ_FILE=$(find . -name "*.tgz" -type f | head -1) if [ -f "$TGZ_FILE" ]; then echo "Загружаем TGZ: $(basename "$TGZ_FILE")" curl -v --user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ --upload-file "$TGZ_FILE" \ "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets?name=$(basename "$TGZ_FILE")" else echo "TGZ файл не найден!" find . -name "*.tgz" -type f fi - name: Загрузка дополнительных файлов if: env.REL_ID != '' run: | # Загружаем .changes файл CHANGES_FILE=$(find . -name "*.changes" -type f | head -1) if [ -f "$CHANGES_FILE" ]; then echo "Загружаем changes: $(basename "$CHANGES_FILE")" curl --user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ --upload-file "$CHANGES_FILE" \ "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets?name=$(basename "$CHANGES_FILE")" fi # Загружаем .buildinfo файл BUILDINFO_FILE=$(find . -name "*.buildinfo" -type f | head -1) if [ -f "$BUILDINFO_FILE" ]; then echo "Загружаем buildinfo: $(basename "$BUILDINFO_FILE")" curl --user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ --upload-file "$BUILDINFO_FILE" \ "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets?name=$(basename "$BUILDINFO_FILE")" fi - name: Итоговый отчет run: | echo "=== Сборка завершена ===" echo "Тег: $TAG_NAME" echo "Версия: $VERSION" echo "Созданные файлы:" find . -name "projman*" -type f | xargs ls -la