From 3c916d80a4c30e37501194d7c08aa1aec1f776ee Mon Sep 17 00:00:00 2001 From: Dmitriy Fofanov Date: Mon, 23 Feb 2026 14:51:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D1=82=D0=BE=D0=BA=D0=B5=D0=BD=D1=8B=20=D0=B2?= =?UTF-8?q?=20Makefile=20=D0=B8=20release.yml=20=D0=B4=D0=BB=D1=8F=20CI/CD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/release.yml | 20 ++++++++++++++------ Makefile | 17 +++++++++-------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index feaf828..fa0f733 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -8,7 +8,7 @@ # Создаёт аннотированный git-тег v2.1.0 и пушит его в origin. # Workflow запускается автоматически по событию push.tags. # -# 2. make ci-release VERSION=2.1.0 GITEA_TOKEN=<токен> +# 2. make ci-release VERSION=2.1.0 GIT_TOKEN=<токен> # Вызывает Gitea API (workflow_dispatch) — запускает вручную # без создания тега. Удобно для тестирования пайплайна. # @@ -30,8 +30,9 @@ # НЕОБХОДИМАЯ НАСТРОЙКА: # # В настройках репозитория Gitea → Settings → Secrets добавить: -# GITEA_TOKEN — токен с правами write:repository и write:release -# (обычно автоматически инжектируется runner'ом) +# GIT_TOKEN (рекомендуется) или GITEA_TOKEN — токен с правами +# write:repository и write:release +# (обычно автоматически инжектируется runner'ом) # # ══════════════════════════════════════════════════════════════════════════════ @@ -53,7 +54,7 @@ on: # ── Способ 2: запуск через make release-tag ─────────────────────────────── push: tags: - - "v[0-9]+.[0-9]+.[0-9]*" + - "v*.*.*" # ────────────────────────────────────────────────────────────────────────────── # Глобальные переменные окружения (доступны во всех jobs) @@ -244,8 +245,15 @@ jobs: # POST /api/v1/repos/{owner}/{repo}/releases/{id}/assets — загрузить файл - name: "Создание релиза в Gitea и загрузка файлов" env: + GIT_TOKEN: ${{ secrets.GIT_TOKEN }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: | + TOKEN="${GIT_TOKEN:-$GITEA_TOKEN}" + if [ -z "${TOKEN}" ]; then + echo "ОШИБКА: не задан секрет GIT_TOKEN (или GITEA_TOKEN)." + exit 1 + fi + GITEA_URL="${{ github.server_url }}" REPO="${{ github.repository }}" COMMIT="${{ github.sha }}" @@ -295,7 +303,7 @@ jobs: echo "Создаём релиз ${TAG}..." RELEASE_JSON=$(curl -sf -X POST \ - -H "Authorization: token ${GITEA_TOKEN}" \ + -H "Authorization: token ${TOKEN}" \ -H "Content-Type: application/json" \ "${GITEA_URL}/api/v1/repos/${REPO}/releases" \ -d "{ @@ -334,7 +342,7 @@ jobs: HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \ -X POST \ - -H "Authorization: token ${GITEA_TOKEN}" \ + -H "Authorization: token ${TOKEN}" \ -H "Content-Type: application/octet-stream" \ --data-binary @"${FILE}" \ "${GITEA_URL}/api/v1/repos/${REPO}/releases/${RELEASE_ID}/assets?name=${FILENAME}") diff --git a/Makefile b/Makefile index 39de61e..5034300 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ OUTPUT_DIR := ./result # Переопределить через env или CLI: make release-tag GITEA_URL=https://... GITEA_URL ?= https://github.dfv24.com GITEA_REPO ?= fofanov/genaudiobookinfo +GIT_TOKEN ?= GITEA_TOKEN ?= # ============================================================================ @@ -486,25 +487,25 @@ release-tag-delete: $(info >>> Тег v$(VERSION) удалён.) ## Запустить CI/CD workflow вручную через Gitea API (без создания тега) -## Использование: make ci-release VERSION=2.1.0 GITEA_TOKEN=<токен> +## Использование: make ci-release VERSION=2.1.0 GIT_TOKEN=<токен> ifeq ($(OS),Windows_NT) ci-release: - $(if $(GITEA_TOKEN),,$(error GITEA_TOKEN не задан. Используйте: make ci-release GITEA_TOKEN=<токен>)) + $(if $(or $(GIT_TOKEN),$(GITEA_TOKEN)),,$(error GIT_TOKEN (или GITEA_TOKEN) не задан. Используйте: make ci-release GIT_TOKEN=<токен>)) $(info >>> Запуск CI/CD workflow для версии $(VERSION)...) Invoke-RestMethod -Method Post \ -Uri '$(GITEA_URL)/api/v1/repos/$(GITEA_REPO)/actions/workflows/release.yml/dispatches' \ - -Headers @{ Authorization = 'token $(GITEA_TOKEN)'; 'Content-Type' = 'application/json' } \ - -Body '{"ref": "main", "inputs": {"version": "$(VERSION)"}}' + -Headers @{ Authorization = 'token $(if $(GIT_TOKEN),$(GIT_TOKEN),$(GITEA_TOKEN))'; 'Content-Type' = 'application/json' } \ + -Body '{"ref": "master", "inputs": {"version": "$(VERSION)"}}' $(info >>> Workflow запущен. Статус: $(GITEA_URL)/$(GITEA_REPO)/actions) else ci-release: - $(if $(GITEA_TOKEN),,$(error GITEA_TOKEN не задан. Используйте: make ci-release GITEA_TOKEN=<токен>)) + $(if $(or $(GIT_TOKEN),$(GITEA_TOKEN)),,$(error GIT_TOKEN (или GITEA_TOKEN) не задан. Используйте: make ci-release GIT_TOKEN=<токен>)) $(info >>> Запуск CI/CD workflow для версии $(VERSION)...) curl -sf -X POST \ - -H "Authorization: token $(GITEA_TOKEN)" \ + -H "Authorization: token $(if $(GIT_TOKEN),$(GIT_TOKEN),$(GITEA_TOKEN))" \ -H "Content-Type: application/json" \ "$(GITEA_URL)/api/v1/repos/$(GITEA_REPO)/actions/workflows/release.yml/dispatches" \ - -d '{"ref": "main", "inputs": {"version": "$(VERSION)"}}' \ + -d '{"ref": "master", "inputs": {"version": "$(VERSION)"}}' \ && echo "Workflow запущен. Статус: $(GITEA_URL)/$(GITEA_REPO)/actions" endif @@ -590,7 +591,7 @@ help: $(info make ci-check Проверить git-статус перед релизом) $(info make release-tag VERSION=X.Y.Z Создать тег и запустить CI автоматически) $(info make ci-release VERSION=X.Y.Z Запустить CI вручную через Gitea API) - $(info GITEA_TOKEN=<токен> обязателен для ci-release) + $(info GIT_TOKEN=<токен> (или GITEA_TOKEN) обязателен для ci-release) $(info make release-tag-delete VERSION=X.Y.Z Удалить ошибочный тег) $(info ) $(info Wiki:)