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))