From 1be50c3eebe88fa2d663d328f9393c800f27d3ea Mon Sep 17 00:00:00 2001 From: ruberoid Date: Fri, 17 Oct 2025 10:56:40 +0400 Subject: [PATCH] deploy_only: 0.7.35 --- .drone.yml | 10 ++++++++-- _deploy/README.md | 38 +++++++++++++++++++++++++++++--------- _deploy/scripts/deploy.sh | 34 ++++++++++++++++++++++++---------- 3 files changed, 61 insertions(+), 21 deletions(-) diff --git a/.drone.yml b/.drone.yml index 9dcdca2..98e68ea 100644 --- a/.drone.yml +++ b/.drone.yml @@ -637,7 +637,13 @@ steps: - mkdir -p $HOME/.kube - echo "$KUBECONFIG_CONTENT" > $HOME/.kube/config - chmod 600 $HOME/.kube/config - - cd flea/_deploy/scripts - - sh deploy.sh "${DRONE_TAG}" "${DRONE_COMMIT_SHA:0:7}" + - cd flea + - | + # Extract image tag from commit message (format: "deploy_only: v1.2.3") + COMMIT_MSG=$(git log -1 --pretty=%B) + IMAGE_TAG=$(echo "$COMMIT_MSG" | grep -oP 'deploy_only:\s*\K[v0-9.]+' || echo "${DRONE_TAG}") + echo "🏷️ Deploying images with tag: $IMAGE_TAG" + cd _deploy/scripts + sh deploy.sh "${DRONE_TAG}" "${DRONE_COMMIT_SHA:0:7}" "$IMAGE_TAG" depends_on: - check-trigger diff --git a/_deploy/README.md b/_deploy/README.md index fb0702f..c08d7a8 100644 --- a/_deploy/README.md +++ b/_deploy/README.md @@ -110,7 +110,7 @@ git push origin v1.3.0 --- ### Пайплайн 5: **Deploy-Only (Только деплой)** -**Триггер:** Тег с сообщением коммита, содержащим `deploy_only:` +**Триггер:** Тег с сообщением коммита, содержащим `deploy_only: ` **Назначение:** Быстрый деплой уже собранных образов **Длительность:** ~1 минута @@ -119,14 +119,26 @@ git push origin v1.3.0 - Деплоит указанные образы в Kubernetes - Полезно для отката или продвижения существующих образов +**ВАЖНО:** В сообщении коммита нужно указать версию образов для деплоя: + **Пример рабочего процесса:** ```bash -# Деплой существующих образов -git commit --allow-empty -m "deploy_only: Deploy v1.2.9" -git tag v1.2.9-deploy -git push origin v1.2.9-deploy +# Деплой существующих образов v1.2.9 +git commit --allow-empty -m "deploy_only: v1.2.9" +git tag deploy-v1.2.9 +git push origin deploy-v1.2.9 + +# Откат на предыдущую версию v1.2.8 +git commit --allow-empty -m "deploy_only: v1.2.8" +git tag rollback-v1.2.8 +git push origin rollback-v1.2.8 ``` +**Формат commit message:** +- `deploy_only: v1.2.9` - деплоит образы с тегом `v1.2.9` +- Скрипт извлекает версию из сообщения и использует соответствующие образы +- Образы должны существовать в registry (собраны ранее через full-release) + --- ## 🛠️ Скрипты деплоя @@ -137,10 +149,18 @@ git push origin v1.2.9-deploy **Назначение:** Деплой сервисов в Kubernetes **Использование:** ```bash -./deploy.sh +# Full release (использует TAG для образов) ./deploy.sh v1.3.0 abc1234 + +# Deploy only (переопределяет тег образа) +./deploy.sh deploy-v1.2.9 def5678 v1.2.9 ``` +**Параметры:** +1. `tag` - Git тег (обязательный) +2. `commit-sha` - SHA коммита (опциональный) +3. `image-tag-override` - Переопределение тега образа (опциональный, для deploy_only) + **Возможности:** - Обновляет deployment-манифесты новыми тегами образов - Применяет манифесты в кластер @@ -256,9 +276,9 @@ Push в main → Main Validation (сборка + тесты) 4. **Экстренный откат** ```bash # Быстрый откат через deploy-only - git commit --allow-empty -m "deploy_only: Rollback to v1.2.8" - git tag v1.2.8-rollback - git push origin v1.2.8-rollback + git commit --allow-empty -m "deploy_only: v1.2.8" + git tag rollback-v1.2.8 + git push origin rollback-v1.2.8 # Или используйте скрипт отката напрямую в кластере kubectl exec -it deploy-pod -- bash diff --git a/_deploy/scripts/deploy.sh b/_deploy/scripts/deploy.sh index dcccd9d..3829daa 100755 --- a/_deploy/scripts/deploy.sh +++ b/_deploy/scripts/deploy.sh @@ -4,20 +4,34 @@ set -e # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # 🚀 Nocr Services Deployment Script # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -# Usage: ./deploy.sh -# Example: ./deploy.sh v1.2.3 abc1234 +# Usage: ./deploy.sh [commit-sha] [image-tag-override] +# Examples: +# Full release: ./deploy.sh v1.2.3 abc1234 +# Deploy only: ./deploy.sh deploy-v1.2.3 def5678 v1.2.3 # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ TAG=${1:-latest} -COMMIT_SHA=${2:-latest} +COMMIT_SHA=${2:-} NAMESPACE="nocr" DEPLOYMENT_FILE="../k8s/deployment.yaml" +IMAGE_TAG_OVERRIDE=${3:-} + +# Determine image tag to use +# Priority: 1) IMAGE_TAG_OVERRIDE (from command line), 2) TAG +if [ -n "$IMAGE_TAG_OVERRIDE" ]; then + IMAGE_TAG=$IMAGE_TAG_OVERRIDE +else + IMAGE_TAG=${TAG} +fi echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🚀 Starting deployment of Nocr services" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "📦 Tag: $TAG" -echo "📝 Commit SHA: $COMMIT_SHA" +echo "🏷️ Image Tag: $IMAGE_TAG" +if [ -n "$COMMIT_SHA" ]; then + echo "📝 Commit SHA: $COMMIT_SHA" +fi echo "🎯 Namespace: $NAMESPACE" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" @@ -42,12 +56,12 @@ cp "$DEPLOYMENT_FILE" "$TEMP_DEPLOYMENT" echo "🔧 Updating image tags in deployment manifests..." # Update image tags for all services -sed -i "s|hub.musk.fun/k8s/nocr/telegram_listener:.*|hub.musk.fun/k8s/nocr/telegram_listener:${COMMIT_SHA}|g" "$TEMP_DEPLOYMENT" -sed -i "s|hub.musk.fun/k8s/nocr/telegram_client:.*|hub.musk.fun/k8s/nocr/telegram_client:${COMMIT_SHA}|g" "$TEMP_DEPLOYMENT" -sed -i "s|hub.musk.fun/k8s/nocr/text_matcher:.*|hub.musk.fun/k8s/nocr/text_matcher:${COMMIT_SHA}|g" "$TEMP_DEPLOYMENT" -sed -i "s|hub.musk.fun/k8s/nocr/text_matcher_migrator:.*|hub.musk.fun/k8s/nocr/text_matcher_migrator:${COMMIT_SHA}|g" "$TEMP_DEPLOYMENT" -sed -i "s|hub.musk.fun/k8s/nocr/users:.*|hub.musk.fun/k8s/nocr/users:${COMMIT_SHA}|g" "$TEMP_DEPLOYMENT" -sed -i "s|hub.musk.fun/k8s/nocr/users_migrator:.*|hub.musk.fun/k8s/nocr/users_migrator:${COMMIT_SHA}|g" "$TEMP_DEPLOYMENT" +sed -i "s|hub.musk.fun/k8s/nocr/telegram_listener:.*|hub.musk.fun/k8s/nocr/telegram_listener:${IMAGE_TAG}|g" "$TEMP_DEPLOYMENT" +sed -i "s|hub.musk.fun/k8s/nocr/telegram_client:.*|hub.musk.fun/k8s/nocr/telegram_client:${IMAGE_TAG}|g" "$TEMP_DEPLOYMENT" +sed -i "s|hub.musk.fun/k8s/nocr/text_matcher:.*|hub.musk.fun/k8s/nocr/text_matcher:${IMAGE_TAG}|g" "$TEMP_DEPLOYMENT" +sed -i "s|hub.musk.fun/k8s/nocr/text_matcher_migrator:.*|hub.musk.fun/k8s/nocr/text_matcher_migrator:${IMAGE_TAG}|g" "$TEMP_DEPLOYMENT" +sed -i "s|hub.musk.fun/k8s/nocr/users:.*|hub.musk.fun/k8s/nocr/users:${IMAGE_TAG}|g" "$TEMP_DEPLOYMENT" +sed -i "s|hub.musk.fun/k8s/nocr/users_migrator:.*|hub.musk.fun/k8s/nocr/users_migrator:${IMAGE_TAG}|g" "$TEMP_DEPLOYMENT" echo "✅ Image tags updated"