deploy_only: 0.7.35
Some checks failed
continuous-integration/drone/tag Build is failing

This commit is contained in:
ruberoid 2025-10-17 10:56:40 +04:00
parent 8a3c6b50e3
commit 1be50c3eeb
3 changed files with 61 additions and 21 deletions

View File

@ -637,7 +637,13 @@ steps:
- mkdir -p $HOME/.kube - mkdir -p $HOME/.kube
- echo "$KUBECONFIG_CONTENT" > $HOME/.kube/config - echo "$KUBECONFIG_CONTENT" > $HOME/.kube/config
- chmod 600 $HOME/.kube/config - chmod 600 $HOME/.kube/config
- cd flea/_deploy/scripts - cd flea
- sh deploy.sh "${DRONE_TAG}" "${DRONE_COMMIT_SHA:0:7}" - |
# 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: depends_on:
- check-trigger - check-trigger

View File

@ -110,7 +110,7 @@ git push origin v1.3.0
--- ---
### Пайплайн 5: **Deploy-Only (Только деплой)** ### Пайплайн 5: **Deploy-Only (Только деплой)**
**Триггер:** Тег с сообщением коммита, содержащим `deploy_only:` **Триггер:** Тег с сообщением коммита, содержащим `deploy_only: <version>`
**Назначение:** Быстрый деплой уже собранных образов **Назначение:** Быстрый деплой уже собранных образов
**Длительность:** ~1 минута **Длительность:** ~1 минута
@ -119,14 +119,26 @@ git push origin v1.3.0
- Деплоит указанные образы в Kubernetes - Деплоит указанные образы в Kubernetes
- Полезно для отката или продвижения существующих образов - Полезно для отката или продвижения существующих образов
**ВАЖНО:** В сообщении коммита нужно указать версию образов для деплоя:
**Пример рабочего процесса:** **Пример рабочего процесса:**
```bash ```bash
# Деплой существующих образов # Деплой существующих образов v1.2.9
git commit --allow-empty -m "deploy_only: Deploy v1.2.9" git commit --allow-empty -m "deploy_only: v1.2.9"
git tag v1.2.9-deploy git tag deploy-v1.2.9
git push origin v1.2.9-deploy 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 **Назначение:** Деплой сервисов в Kubernetes
**Использование:** **Использование:**
```bash ```bash
./deploy.sh <tag> <commit-sha> # Full release (использует TAG для образов)
./deploy.sh v1.3.0 abc1234 ./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-манифесты новыми тегами образов - Обновляет deployment-манифесты новыми тегами образов
- Применяет манифесты в кластер - Применяет манифесты в кластер
@ -256,9 +276,9 @@ Push в main → Main Validation (сборка + тесты)
4. **Экстренный откат** 4. **Экстренный откат**
```bash ```bash
# Быстрый откат через deploy-only # Быстрый откат через deploy-only
git commit --allow-empty -m "deploy_only: Rollback to v1.2.8" git commit --allow-empty -m "deploy_only: v1.2.8"
git tag v1.2.8-rollback git tag rollback-v1.2.8
git push origin v1.2.8-rollback git push origin rollback-v1.2.8
# Или используйте скрипт отката напрямую в кластере # Или используйте скрипт отката напрямую в кластере
kubectl exec -it deploy-pod -- bash kubectl exec -it deploy-pod -- bash

View File

@ -4,20 +4,34 @@ set -e
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# 🚀 Nocr Services Deployment Script # 🚀 Nocr Services Deployment Script
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# Usage: ./deploy.sh <tag> <commit-sha> # Usage: ./deploy.sh <tag> [commit-sha] [image-tag-override]
# Example: ./deploy.sh v1.2.3 abc1234 # Examples:
# Full release: ./deploy.sh v1.2.3 abc1234
# Deploy only: ./deploy.sh deploy-v1.2.3 def5678 v1.2.3
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TAG=${1:-latest} TAG=${1:-latest}
COMMIT_SHA=${2:-latest} COMMIT_SHA=${2:-}
NAMESPACE="nocr" NAMESPACE="nocr"
DEPLOYMENT_FILE="../k8s/deployment.yaml" 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 "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🚀 Starting deployment of Nocr services" echo "🚀 Starting deployment of Nocr services"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📦 Tag: $TAG" 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 "🎯 Namespace: $NAMESPACE"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@ -42,12 +56,12 @@ cp "$DEPLOYMENT_FILE" "$TEMP_DEPLOYMENT"
echo "🔧 Updating image tags in deployment manifests..." echo "🔧 Updating image tags in deployment manifests..."
# Update image tags for all services # 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_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:${COMMIT_SHA}|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:${COMMIT_SHA}|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:${COMMIT_SHA}|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:${COMMIT_SHA}|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:${COMMIT_SHA}|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" echo "✅ Image tags updated"