From 3f48fbb63b7166a83488dd3d980fd68bc3eecb54 Mon Sep 17 00:00:00 2001 From: Dmitriy Fofanov Date: Wed, 25 Feb 2026 02:07:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B0?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=BF=D1=83=D1=81=D0=BA=D0=B0=20=D1=80=D0=B5?= =?UTF-8?q?=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2:=20=D0=BF=D0=BE=D0=B4=D0=B4?= =?UTF-8?q?=D0=B5=D1=80=D0=B6=D0=BA=D0=B0=20=D0=B4=D0=B8=D0=BD=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B9=20=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8E=20=D0=B8=20=D1=83=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=BD=D0=B0=D1=8F=20=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20=D1=82=D0=B5=D0=B3=D0=BE=D0=B2?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 33 +++++++++++++++++++++++++++++---- Makefile | 27 ++++++++++++++++----------- 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c5af338..1ee529e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,8 +69,12 @@ jobs: echo ">>> Тег ${TAG} найден, клонирование..." git clone --branch "${TAG}" --depth 50 "${CLONE_URL}" . 2>&1 | grep -F -v "${TOKEN:-}" || true else - echo ">>> Тег ${TAG} не найден, клонирование ветки master..." - git clone --branch master --depth 50 "${CLONE_URL}" . 2>&1 | grep -F -v "${TOKEN:-}" || true + DEFAULT_BRANCH="${{ github.event.repository.default_branch }}" + if [ -z "${DEFAULT_BRANCH}" ] || [ "${DEFAULT_BRANCH}" = "null" ]; then + DEFAULT_BRANCH="master" + fi + echo ">>> Тег ${TAG} не найден, клонирование ветки ${DEFAULT_BRANCH}..." + git clone --branch "${DEFAULT_BRANCH}" --depth 50 "${CLONE_URL}" . 2>&1 | grep -F -v "${TOKEN:-}" || true fi git fetch --tags --force 2>/dev/null || true @@ -268,7 +272,10 @@ jobs: EXTRA_HEADERS=() fi - TARGET_COMMITISH="${RELEASE_REF:-master}" + TARGET_COMMITISH="${RELEASE_REF:-${{ github.event.repository.default_branch }}}" + if [ -z "${TARGET_COMMITISH}" ] || [ "${TARGET_COMMITISH}" = "null" ]; then + TARGET_COMMITISH="master" + fi if [ -n "${GITHUB_SHA:-}" ]; then TARGET_COMMITISH="${GITHUB_SHA}" fi @@ -302,7 +309,13 @@ jobs: PY ) - RELEASE_PAYLOAD="{\"tag_name\":\"${TAG}\",\"target_commitish\":\"${TARGET_COMMITISH}\",\"name\":\"${TAG}\",\"body\":${BODY_JSON},\"draft\":false,\"prerelease\":false}" + if [ "${HOST}" = "github.com" ]; then + RELEASE_PAYLOAD="{\"tag_name\":\"${TAG}\",\"target_commitish\":\"${TARGET_COMMITISH}\",\"name\":\"${TAG}\",\"body\":${BODY_JSON},\"draft\":false,\"prerelease\":false}" + else + RELEASE_PAYLOAD="{\"tag_name\":\"${TAG}\",\"target\":\"${TARGET_COMMITISH}\",\"title\":\"${TAG}\",\"note\":${BODY_JSON},\"draft\":false,\"prerelease\":false}" + fi + + echo ">>> Создание релиза для тега ${TAG}..." RELEASE_JSON=$(curl -sS -X POST \ -H "${AUTH_HEADER}" \ -H "Content-Type: application/json" \ @@ -319,6 +332,18 @@ jobs: RELEASE_ID=$(cat /tmp/release_id.txt) rm -f /tmp/release_id.txt + if [ -z "${RELEASE_ID}" ] && [ "${HOST}" != "github.com" ]; then + echo ">>> Не удалось получить ID из create-response, пытаемся найти существующий релиз по тегу ${TAG}..." + RELEASE_JSON=$(curl -sS \ + -H "${AUTH_HEADER}" \ + "${SERVER}/api/v1/repos/${REPO}/releases/tags/${TAG}") + + if printf '%s' "${RELEASE_JSON}" | python3 -c "import sys, json; j=json.load(sys.stdin); print(j.get('id',''));" >/tmp/release_id.txt 2>/dev/null; then + RELEASE_ID=$(cat /tmp/release_id.txt) + fi + rm -f /tmp/release_id.txt + fi + if [ -z "${RELEASE_ID}" ]; then echo "ОШИБКА: не удалось получить ID релиза" echo "${RELEASE_JSON}" diff --git a/Makefile b/Makefile index 5fc67d0..526d1a4 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,11 @@ # Let's Encrypt с DNS-валидацией через API reg.ru # ============================================================================== +# Подгружаем локальные переменные окружения (не коммитятся в git) +ifneq (,$(wildcard .env)) +include .env +endif + # Переменные (переопределяемые через окружение или аргументы make) INSTALL_DIR ?= /opt/letsencrypt-regru SCRIPT_NAME = letsencrypt_regru_api.py @@ -55,7 +60,7 @@ WIKI_SYNC_REF ?= master RELEASE_WORKFLOW ?= release.yml RELEASE_REF ?= master -RELEASE_TAG := $(if $(TAG),$(TAG),v$(VERSION)) +RELEASE_TAG := $(if $(TAG),$(TAG),$(if $(filter v%,$(VERSION)),$(VERSION),v$(VERSION))) DEPLOY_SERVICE_WORKFLOW ?= deploy-service.yml DEPLOY_SERVICE_REF ?= master @@ -92,9 +97,9 @@ help: @echo "" @echo "$(GREEN)CI / Wiki:$(NC)" @echo "" - @echo " $(YELLOW)make wiki-sync$(NC) - Запустить workflow wiki-sync.yml на gitea.example.com" - @echo " $(YELLOW)make ci-release$(NC) - Запустить workflow release.yml на gitea.example.com (нужен TAG или VERSION)" - @echo " $(YELLOW)make deploy-service$(NC) - Запустить workflow deploy-service.yml на gitea.example.com" + @echo " $(YELLOW)make wiki-sync$(NC) - Запустить workflow wiki-sync.yml на $(DFGIT_URL)" + @echo " $(YELLOW)make ci-release$(NC) - Запустить workflow release.yml на $(DFGIT_URL) (нужен TAG или VERSION)" + @echo " $(YELLOW)make deploy-service$(NC) - Запустить workflow deploy-service.yml на $(DFGIT_URL)" @echo "" @echo " $(YELLOW)make help$(NC) - Показать эту справку" @echo "" @@ -450,11 +455,11 @@ logs: @echo "$(YELLOW)→ Логи systemd:$(NC)" @journalctl -u $(SERVICE_FILE) -n 50 --no-pager 2>/dev/null || echo "$(YELLOW)Логи systemd не найдены$(NC)" -# Запуск workflow синхронизации wiki на gitea.example.com +# Запуск workflow синхронизации wiki на $(DFGIT_URL) ifeq ($(OS),Windows_NT) wiki-sync: @echo "$(BLUE)╔════════════════════════════════════════════════════════════════╗$(NC)" - @echo "$(BLUE)║ Запуск wiki-sync workflow на gitea.example.com ║$(NC)" + @echo "$(BLUE)║ Запуск wiki-sync workflow на $(DFGIT_URL) ║$(NC)" @echo "$(BLUE)╚════════════════════════════════════════════════════════════════╝$(NC)" @echo "" $(if $(AUTH_TOKEN),,$(error Токен не задан. Укажите DFGIT_TOKEN или GIT_TOKEN/GITEA_TOKEN/GITEA_ACCESS_TOKEN)) @@ -462,7 +467,7 @@ wiki-sync: else wiki-sync: @echo "$(BLUE)╔════════════════════════════════════════════════════════════════╗$(NC)" - @echo "$(BLUE)║ Запуск wiki-sync workflow на gitea.example.com ║$(NC)" + @echo "$(BLUE)║ Запуск wiki-sync workflow на $(DFGIT_URL) ║$(NC)" @echo "$(BLUE)╚════════════════════════════════════════════════════════════════╝$(NC)" @echo "" $(if $(AUTH_TOKEN),,$(error Токен не задан. Укажите DFGIT_TOKEN или GIT_TOKEN/GITEA_TOKEN/GITEA_ACCESS_TOKEN)) @@ -478,7 +483,7 @@ endif ifeq ($(OS),Windows_NT) ci-release: @echo "$(BLUE)╔════════════════════════════════════════════════════════════════╗$(NC)" - @echo "$(BLUE)║ Запуск release workflow на gitea.example.com ║$(NC)" + @echo "$(BLUE)║ Запуск release workflow на $(DFGIT_URL) ║$(NC)" @echo "$(BLUE)╚════════════════════════════════════════════════════════════════╝$(NC)" @echo "" ifndef TAG @@ -491,7 +496,7 @@ endif else ci-release: @echo "$(BLUE)╔════════════════════════════════════════════════════════════════╗$(NC)" - @echo "$(BLUE)║ Запуск release workflow на gitea.example.com ║$(NC)" + @echo "$(BLUE)║ Запуск release workflow на $(DFGIT_URL) ║$(NC)" @echo "$(BLUE)╚════════════════════════════════════════════════════════════════╝$(NC)" @echo "" ifndef TAG @@ -512,7 +517,7 @@ endif ifeq ($(OS),Windows_NT) deploy-service: @echo "$(BLUE)╔════════════════════════════════════════════════════════════════╗$(NC)" - @echo "$(BLUE)║ Запуск deploy-service workflow на gitea.example.com ║$(NC)" + @echo "$(BLUE)║ Запуск deploy-service workflow на $(DFGIT_URL) ║$(NC)" @echo "$(BLUE)╚════════════════════════════════════════════════════════════════╝$(NC)" @echo "" $(if $(AUTH_TOKEN),,$(error Токен не задан. Укажите DFGIT_TOKEN или GIT_TOKEN/GITEA_TOKEN/GITEA_ACCESS_TOKEN)) @@ -520,7 +525,7 @@ deploy-service: else deploy-service: @echo "$(BLUE)╔════════════════════════════════════════════════════════════════╗$(NC)" - @echo "$(BLUE)║ Запуск deploy-service workflow на gitea.example.com ║$(NC)" + @echo "$(BLUE)║ Запуск deploy-service workflow на $(DFGIT_URL) ║$(NC)" @echo "$(BLUE)╚════════════════════════════════════════════════════════════════╝$(NC)" @echo "" $(if $(AUTH_TOKEN),,$(error Токен не задан. Укажите DFGIT_TOKEN или GIT_TOKEN/GITEA_TOKEN/GITEA_ACCESS_TOKEN))