Улучшение процесса выпуска релизов: поддержка динамической ветки по умолчанию и улучшенная обработка тегов.
This commit is contained in:
@@ -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
|
||||
)
|
||||
|
||||
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}"
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user