Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 18s

This commit is contained in:
svk
2026-01-22 21:18:59 +03:00
parent d60bef5de3
commit faaecbb271

View File

@@ -33,34 +33,32 @@ jobs:
- name: Проверка существования тега - name: Проверка существования тега
id: check_tag id: check_tag
run: | run: |
# Проверяем, существует ли тег локально echo "Проверяем тег: $TAG"
if git show-ref --tags --quiet --verify -- "refs/tags/$TAG"; then
echo "Тег $TAG уже существует локально"
echo "TAG_EXISTS=true" >> $GITEA_ENV
else
echo "Тег $TAG не существует локально"
echo "TAG_EXISTS=false" >> $GITEA_ENV
fi
# Проверяем на удаленном сервере # Проверяем на удаленном сервере
git ls-remote --tags origin "$TAG" && echo "TAG_EXISTS_REMOTE=true" >> $GITEA_ENV || echo "TAG_EXISTS_REMOTE=false" >> $GITEA_ENV if git ls-remote --tags origin "$TAG" 2>/dev/null | grep -q "$TAG"; then
echo "Тег $TAG уже существует на удаленном сервере"
echo "TAG_EXISTS_REMOTE=true" >> $GITEA_ENV
else
echo "Тег $TAG не существует на удаленном сервере"
echo "TAG_EXISTS_REMOTE=false" >> $GITEA_ENV
fi
- name: Создание тега (только если не существует) - name: Создание тега (только если не существует)
if: env.TAG_EXISTS_REMOTE == 'false' if: env.TAG_EXISTS_REMOTE == 'false'
run: | run: |
echo "Создаем новый тег: $TAG" echo "Создаем новый тег: $TAG"
git config user.email "svk@nuk-svk.ru" git config user.email "svk@nuk-svk.ru"
git config user.name svk" git config user.name "svk"
# Создаем тег локально # Создаем тег локально
git tag -a "$TAG" -m "Release $TAG - $RELEASE" git tag -a "$TAG" -m "Release $TAG - $RELEASE"
# Настраиваем URL для push
git remote set-url origin "https://${{ secrets.USER }}:${{ secrets.API_TOKEN }}@git.nuk-svk.ru/${{ gitea.repository }}.git" git remote set-url origin "https://${{ secrets.USER }}:${{ secrets.API_TOKEN }}@git.nuk-svk.ru/${{ gitea.repository }}.git"
# Пушим тег на сервер # Пушим тег на сервер
git push origin "$TAG" git push origin "$TAG"
env:
GIT_ASKPASS: "echo ${{ secrets.API_TOKEN }}"
- name: Сборка пакетов - name: Сборка пакетов
run: | run: |
@@ -71,7 +69,7 @@ jobs:
cd ../openbsd && ./build-package-bsd.sh cd ../openbsd && ./build-package-bsd.sh
echo "=== Собранные файлы ===" echo "=== Собранные файлы ==="
find . -name "projman*" -type f | xargs ls -la find . -maxdepth 1 -name "projman*" -type f | xargs ls -la 2>/dev/null || echo "Файлы не найдены"
- name: Проверка существования релиза - name: Проверка существования релиза
id: check_release id: check_release
@@ -80,6 +78,8 @@ jobs:
RESPONSE=$(curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ RESPONSE=$(curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/tags/$TAG" || echo "{}") "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/tags/$TAG" || echo "{}")
echo "Ответ API проверки релиза: $RESPONSE"
if echo "$RESPONSE" | grep -q '"id"'; then if echo "$RESPONSE" | grep -q '"id"'; then
REL_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | cut -d: -f2) REL_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | cut -d: -f2)
echo "Реліз уже существует. ID: $REL_ID" echo "Реліз уже существует. ID: $REL_ID"
@@ -88,9 +88,11 @@ jobs:
else else
echo "Реліз не существует" echo "Реліз не существует"
echo "RELEASE_EXISTS=false" >> $GITEA_ENV echo "RELEASE_EXISTS=false" >> $GITEA_ENV
echo "REL_ID=" >> $GITEA_ENV
fi fi
- name: Создание или обновление релиза - name: Создание или обновление релиза
id: create_release
run: | run: |
echo "=== Работа с релизом для тега $TAG ===" echo "=== Работа с релизом для тега $TAG ==="
@@ -104,20 +106,25 @@ jobs:
- DEB пакет для Debian/Ubuntu - DEB пакет для Debian/Ubuntu
- TGZ пакет для OpenBSD" - TGZ пакет для OpenBSD"
# Экранируем переносы строк для JSON
ESCAPED_BODY=$(echo "$RELEASE_BODY" | sed ':a;N;$!ba;s/\n/\\n/g')
if [ "$RELEASE_EXISTS" = "true" ]; then if [ "$RELEASE_EXISTS" = "true" ]; then
echo "Обновляем существующий релиз ID: $REL_ID" echo "Обновляем существующий релиз ID: $REL_ID"
# Обновляем существующий релиз # Обновляем существующий релиз
curl -X PATCH \ RESPONSE=$(curl -s -X PATCH \
-u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{ -d '{
"name": "Projman '"$VERSION"'", "name": "Projman '"$VERSION"'",
"body": "'"$(echo "$RELEASE_BODY" | sed ':a;N;$!ba;s/\n/\\n/g')"'", "body": "'"$ESCAPED_BODY"'",
"draft": false, "draft": false,
"prerelease": false "prerelease": false
}' \ }' \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID" "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID")
echo "Ответ обновления релиза: $RESPONSE"
else else
echo "Создаем новый релиз" echo "Создаем новый релиз"
@@ -129,58 +136,70 @@ jobs:
-d '{ -d '{
"tag_name": "'"$TAG"'", "tag_name": "'"$TAG"'",
"name": "Projman '"$VERSION"'", "name": "Projman '"$VERSION"'",
"body": "'"$(echo "$RELEASE_BODY" | sed ':a;N;$!ba;s/\n/\\n/g')"'", "body": "'"$ESCAPED_BODY"'",
"draft": false, "draft": false,
"prerelease": false "prerelease": false
}' \ }' \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases") "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases")
# Получаем ID нового релиза echo "Ответ создания релиза: $RESPONSE"
REL_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | cut -d: -f2)
echo "REL_ID=$REL_ID" >> $GITEA_ENV
fi
echo "ID релиза: $REL_ID" # Получаем ID нового релиза
if echo "$RESPONSE" | grep -q '"id"'; then
NEW_REL_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | cut -d: -f2)
echo "Новый ID релиза: $NEW_REL_ID"
echo "REL_ID=$NEW_REL_ID" >> $GITEA_ENV
echo "id=$NEW_REL_ID" >> $GITHUB_OUTPUT # Для совместимости
else
echo "ОШИБКА: Не удалось получить ID релиза из ответа"
echo "REL_ID=" >> $GITEA_ENV
fi
fi
- name: Загрузка файлов в релиз - name: Загрузка файлов в релиз
if: env.REL_ID != '' if: env.REL_ID != ''
run: | run: |
echo "=== Загрузка файлов в релиз ===" echo "=== Загрузка файлов в релиз ==="
echo "ID релиза для загрузки: $REL_ID"
# Сначала удаляем старые файлы с таким же именем (если есть) # Находим все файлы projman
echo "Проверяем существующие файлы в релизе..." FILES=$(find ../ -maxdepth 1 \( -name "*projman*deb" -o -name "*projman*tgz" \) -type f)
EXISTING_ASSETS=$(curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ if [ -z "$FILES" ]; then
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets") echo "Нет файлов projman для загрузки"
exit 0
# Загружаем все новые файлы
for FILE in $(find . -maxdepth 1 -name "projman*" -type f); do
FILENAME=$(basename "$FILE")
echo "Обрабатываем файл: $FILENAME"
# Проверяем, существует ли файл с таким именем
ASSET_ID=$(echo "$EXISTING_ASSETS" | grep -o "\"name\":\"$FILENAME\".*\"id\":[0-9]*" | grep -o '"id":[0-9]*' | cut -d: -f2)
if [ -n "$ASSET_ID" ]; then
echo " Файл уже существует (ID: $ASSET_ID), удаляем..."
curl -X DELETE \
-u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/assets/$ASSET_ID"
fi fi
echo " Загружаем новый файл..." echo "Найдены файлы:"
curl --user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ echo "$FILES"
# Загружаем каждый файл
for FILE in $FILES; do
FILENAME=$(basename "$FILE")
echo "Загружаем: $FILENAME"
curl -v --user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
--upload-file "$FILE" \ --upload-file "$FILE" \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets?name=$FILENAME" "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets?name=$FILENAME"
echo " Готово!" echo "Файл загружен: $FILENAME"
done done
- name: Финализация - name: Финализация
run: | run: |
echo "=== Сборка завершена ===" echo "=== Сборка завершена ==="
echo "Тег: $TAG" echo "Тег: $TAG"
echo "Версия: $VERSION"
echo "Ревизия: $RELEASE"
echo "ID релиза: $REL_ID" echo "ID релиза: $REL_ID"
echo "Файлы в релизе:"
if [ -n "$REL_ID" ]; then
echo "Проверяем файлы в релизе..."
curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets" | \ "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets" | \
grep -o '"name":"[^"]*"' | cut -d'"' -f4 grep -o '"name":"[^"]*"' | cut -d'"' -f4 || echo "Не удалось получить список файлов"
else
echo "Релиз не был создан или ID не получен"
fi
echo "Собранные файлы:"
find . -maxdepth 1 -name "projman*" -type f | xargs ls -la 2>/dev/null || echo "Файлы не найдены"