From a6ad7c7720c66dce1443c0403ef9f149888be06c Mon Sep 17 00:00:00 2001 From: svk Date: Thu, 22 Jan 2026 21:31:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D1=8B=20=D1=81=D0=B1?= =?UTF-8?q?=D0=BE=D1=80=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/build.yml | 68 +++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index e92573b..a68d49f 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -22,43 +22,50 @@ jobs: # Создаем имя тега TAG="v${VERSION}" - echo "TAG=$TAG" >> $GITEA_ENV - echo "VERSION=$VERSION" >> $GITEA_ENV - echo "RELEASE=$RELEASE" >> $GITEA_ENV - echo "Тег: $TAG" - echo "Версия: $VERSION" - echo "Ревизия: $RELEASE" + # Правильный формат для Gitea - в кавычках + echo 'TAG="'"${TAG}"'"' >> $GITEA_ENV + echo 'VERSION="'"${VERSION}"'"' >> $GITEA_ENV + echo 'RELEASE="'"${RELEASE}"'"' >> $GITEA_ENV + + echo "Тег: ${TAG}" + echo "Версия: ${VERSION}" + echo "Ревизия: ${RELEASE}" - name: Проверка существования тега id: check_tag run: | - echo "Проверяем тег: $TAG" + echo "Проверяем тег: ${TAG}" # Проверяем на удаленном сервере - if git ls-remote --tags origin "$TAG" 2>/dev/null | grep -q "$TAG"; then - echo "Тег $TAG уже существует на удаленном сервере" - echo "TAG_EXISTS_REMOTE=true" >> $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 + echo "Тег ${TAG} не существует на удаленном сервере" + echo 'TAG_EXISTS_REMOTE="false"' >> $GITEA_ENV fi + - name: Создание тега (только если не существует) + if: env.TAG_EXISTS_REMOTE == 'true' + run: | + echo "Тег уже существует, пропускаем создание" + - name: Создание тега (только если не существует) if: env.TAG_EXISTS_REMOTE == 'false' run: | - echo "Создаем новый тег: $TAG" + echo "Создаем новый тег: ${TAG}" git config user.email "svk@nuk-svk.ru" 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 push origin "$TAG" + git push origin "${TAG}" - name: Сборка пакетов run: | @@ -83,12 +90,14 @@ jobs: if echo "$RESPONSE" | grep -q '"id"'; then REL_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | cut -d: -f2) echo "Реліз уже существует. ID: $REL_ID" - echo "RELEASE_EXISTS=true" >> $GITHUB_ENV - echo "REL_ID=$REL_ID" >> $GITHUB_ENV + + # Ключевое исправление: пишем в правильном формате + echo 'RELEASE_EXISTS="true"' >> $GITEA_ENV + echo 'REL_ID="'"${REL_ID}"'"' >> $GITEA_ENV else echo "Реліз не существует" - echo "RELEASE_EXISTS=false" >> $GITHUB_ENV - echo "REL_ID=" >> $GITHUB_ENV + echo 'RELEASE_EXISTS="false"' >> $GITEA_ENV + echo 'REL_ID=""' >> $GITEA_ENV fi - name: Создание или обновление релиза @@ -96,12 +105,18 @@ jobs: run: | echo "=== Работа с релизом для тега $TAG ===" + # Проверяем, что тег существует перед созданием релиза + if ! git ls-remote --tags origin "${TAG}" 2>/dev/null | grep -q "${TAG}"; then + echo "ОШИБКА: Тег ${TAG} не существует на сервере!" + exit 1 + fi + RELEASE_BODY="## Projman $VERSION - + **Ревизия:** $RELEASE **Дата сборки:** $(date) **Коммит:** $(git rev-parse --short HEAD) - + ### Собранные пакеты: - DEB пакет для Debian/Ubuntu - TGZ пакет для OpenBSD" @@ -109,8 +124,8 @@ jobs: # Экранируем переносы строк для JSON ESCAPED_BODY=$(echo "$RELEASE_BODY" | sed ':a;N;$!ba;s/\n/\\n/g') - # Используем переменные окружения ПРАВИЛЬНО - if [ "$RELEASE_EXISTS" = "true" ]; then + # Используем переменные напрямую, так как они в окружении + if [ "$RELEASE_EXISTS" = "true" ] && [ -n "$REL_ID" ]; then echo "Обновляем существующий релиз ID: $REL_ID" # Обновляем существующий релиз @@ -149,10 +164,11 @@ jobs: 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" >> $GITHUB_ENV + echo 'REL_ID="'"${NEW_REL_ID}"'"' >> $GITEA_ENV else echo "ОШИБКА: Не удалось получить ID релиза из ответа" - echo "REL_ID=" >> $GITHUB_ENV + echo "Ответ сервера: $RESPONSE" + echo 'REL_ID=""' >> $GITEA_ENV exit 1 fi fi @@ -178,7 +194,7 @@ jobs: FILENAME=$(basename "$FILE") echo "Загружаем: $FILENAME" - curl -v --user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ + curl -s --user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \ --upload-file "$FILE" \ "${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets?name=$FILENAME"