Files
go-lcg/deploy/release-goreleaser-no-copy.sh

74 lines
2.7 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
# release-goreleaser-no-copy.sh
# Использование:
# deploy/release-goreleaser-no-copy.sh <TAG> # релиз на GitHub с указанным тегом (нужен GITHUB_TOKEN)
ROOT_DIR="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
SRC_CFG="$ROOT_DIR/deploy/.goreleaser.yaml"
log() { echo -e "\033[36m[release]\033[0m $*"; }
err() { echo -e "\033[31m[error]\033[0m $*" >&2; }
# Проверка обязательного параметра - тега
if [[ -z "${1:-}" ]]; then
err "Не указан тег. Использование: $0 <TAG>"
exit 1
fi
TAG="$1"
# Проверка наличия тега в git
if ! git rev-parse "$TAG" >/dev/null 2>&1; then
err "Тег '$TAG' не найден в git репозитории"
exit 1
fi
log "Использую тег: $TAG"
export GORELEASER_CURRENT_TAG="$TAG"
if ! command -v goreleaser >/dev/null 2>&1; then
err "goreleaser не найден. Установите: https://goreleaser.com/install/"
exit 1
fi
if [[ ! -f "$SRC_CFG" ]]; then
err "Не найден исходный файл конфигурации: $SRC_CFG"
exit 1
fi
fetch_token_from_k8s() {
export KUBECONFIG=/home/su/.kube/config_hlab
local ns="${K8S_NAMESPACE:-flux-system}"
local name="${K8S_SECRET_NAME:-git-secrets}"
# Предпочитаем jq (как в примере), при отсутствии используем jsonpath + base64 -d
if command -v jq >/dev/null 2>&1; then
kubectl get secret "$name" -n "$ns" -o json \
| jq -r '.data.password | @base64d'
else
kubectl get secret "$name" -n "$ns" -o jsonpath='{.data.password}' \
| base64 -d 2>/dev/null || true
fi
}
if [[ -z "${GITHUB_TOKEN:-}" ]]; then
log "GITHUB_TOKEN не задан — пробую получить из k8s секрета (${K8S_NAMESPACE:-flux-system}/${K8S_SECRET_NAME:-git-secrets}, ключ: password)"
if ! command -v kubectl >/dev/null 2>&1; then
err "kubectl не найден, а GITHUB_TOKEN не задан. Установите kubectl или экспортируйте GITHUB_TOKEN."
exit 1
fi
TOKEN_FROM_K8S="$(fetch_token_from_k8s || true)"
if [[ -n "$TOKEN_FROM_K8S" && "$TOKEN_FROM_K8S" != "null" ]]; then
export GITHUB_TOKEN="$TOKEN_FROM_K8S"
log "GITHUB_TOKEN получен из секрета Kubernetes."
else
err "Не удалось получить GITHUB_TOKEN из секрета Kubernetes. Экспортируйте GITHUB_TOKEN и повторите."
exit 1
fi
fi
log "Запуск goreleaser (публикация на GitHub)"
goreleaser release --clean --config "$SRC_CFG" "${EXTRA_FLAGS[@]:-}"
log "Готово."