Улучшение процесса выпуска релизов: поддержка динамической ветки по умолчанию и улучшенная обработка тегов.

This commit is contained in:
Dmitriy Fofanov
2026-02-25 02:07:28 +03:00
parent c6588a63ed
commit 3f48fbb63b
2 changed files with 45 additions and 15 deletions
+29 -4
View File
@@ -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}"
+16 -11
View File
@@ -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))