This commit is contained in:
parent
8a3c6b50e3
commit
1be50c3eeb
10
.drone.yml
10
.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
|
||||
|
||||
@ -110,7 +110,7 @@ git push origin v1.3.0
|
||||
---
|
||||
|
||||
### Пайплайн 5: **Deploy-Only (Только деплой)**
|
||||
**Триггер:** Тег с сообщением коммита, содержащим `deploy_only:`
|
||||
**Триггер:** Тег с сообщением коммита, содержащим `deploy_only: <version>`
|
||||
**Назначение:** Быстрый деплой уже собранных образов
|
||||
**Длительность:** ~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 <tag> <commit-sha>
|
||||
# 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
|
||||
|
||||
@ -4,20 +4,34 @@ set -e
|
||||
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
# 🚀 Nocr Services Deployment Script
|
||||
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
# Usage: ./deploy.sh <tag> <commit-sha>
|
||||
# Example: ./deploy.sh v1.2.3 abc1234
|
||||
# Usage: ./deploy.sh <tag> [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 "🏷️ 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"
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user