From b270345e77e35e92d42d94b6f8c0459338994f2c Mon Sep 17 00:00:00 2001 From: vigdorov Date: Thu, 15 Jan 2026 12:26:40 +0300 Subject: [PATCH] fix ci --- .drone.yml | 121 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 85 insertions(+), 36 deletions(-) diff --git a/.drone.yml b/.drone.yml index 106534b..9345241 100644 --- a/.drone.yml +++ b/.drone.yml @@ -271,63 +271,112 @@ kind: pipeline type: kubernetes name: keycloak-theme-pipeline -# Триггер: запускать ТОЛЬКО при изменениях в keycloak-theme/ trigger: branch: - main - master event: - push - paths: - include: - - keycloak-theme/** - exclude: - - keycloak-theme/README.md - - keycloak-theme/**/*.md + +volumes: + - name: shared + temp: {} steps: -# --- Сборка Keycloak темы --- -- name: build-keycloak-theme - image: plugins/kaniko - settings: - registry: registry.vigdorov.ru - repo: registry.vigdorov.ru/library/keycloak-team-planner - dockerfile: keycloak-theme/Dockerfile - context: keycloak-theme - tags: - - ${DRONE_COMMIT_SHA:0:7} - - "26.5.0" - - latest - username: - from_secret: HARBOR_USER - password: - from_secret: HARBOR_PASSWORD - no_push_metadata: true +# --- Шаг 1: Проверка изменений --- +- name: check-changes + image: alpine/git + volumes: + - name: shared + path: /shared + commands: + - | + echo "🔍 Checking for changes in keycloak-theme/..." + CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD -- keycloak-theme/ 2>/dev/null | grep -v '\.md$' || true) + if [ -z "$CHANGED_FILES" ]; then + echo "✅ No changes in keycloak-theme/ - will skip build and deploy" + touch /shared/.skip + else + echo "📝 Changed files:" + echo "$CHANGED_FILES" + echo "🔨 Will proceed with build and deploy" + fi -# --- Развертывание Keycloak темы --- +# --- Шаг 2: Сборка образа (только если есть изменения) --- +- name: build-keycloak-theme + image: gcr.io/kaniko-project/executor:debug + depends_on: + - check-changes + volumes: + - name: shared + path: /shared + environment: + HARBOR_USER: + from_secret: HARBOR_USER + HARBOR_PASSWORD: + from_secret: HARBOR_PASSWORD + commands: + - | + if [ -f /shared/.skip ]; then + echo "⏭️ Skipping build - no changes in keycloak-theme/" + exit 0 + fi + - | + echo "🔨 Building Keycloak theme image..." + export IMAGE_TAG=$(echo $DRONE_COMMIT_SHA | cut -c1-7) + export REGISTRY="registry.vigdorov.ru" + export REPO="$REGISTRY/library/keycloak-team-planner" + + # Создаём конфиг для kaniko + mkdir -p /kaniko/.docker + echo "{\"auths\":{\"$REGISTRY\":{\"username\":\"$HARBOR_USER\",\"password\":\"$HARBOR_PASSWORD\"}}}" > /kaniko/.docker/config.json + + /kaniko/executor \ + --dockerfile=keycloak-theme/Dockerfile \ + --context=dir:///drone/src/keycloak-theme \ + --destination=$REPO:$IMAGE_TAG \ + --destination=$REPO:26.5.0 \ + --destination=$REPO:latest \ + --cache=false + + echo "✅ Image built: $REPO:$IMAGE_TAG" + +# --- Шаг 3: Деплой (только если есть изменения) --- - name: deploy-keycloak-theme image: alpine/k8s:1.28.2 depends_on: - build-keycloak-theme + volumes: + - name: shared + path: /shared environment: KUBE_CONFIG_CONTENT: from_secret: KUBE_CONFIG commands: - - mkdir -p ~/.kube - - echo "$KUBE_CONFIG_CONTENT" > ~/.kube/config - - chmod 600 ~/.kube/config - - sed -i "s|https://127.0.0.1:6443|https://10.10.10.100:6443|g" ~/.kube/config - - export KEYCLOAK_NAMESPACE="auth" - - export IMAGE_TAG="${DRONE_COMMIT_SHA:0:7}" - - export KEYCLOAK_IMAGE="registry.vigdorov.ru/library/keycloak-team-planner:$IMAGE_TAG" - - kubectl cluster-info - - kubectl set image statefulset/keycloak-keycloakx keycloak=$KEYCLOAK_IMAGE -n $KEYCLOAK_NAMESPACE - - echo "📋 Waiting for rollout..." - | + if [ -f /shared/.skip ]; then + echo "⏭️ Skipping deploy - no changes in keycloak-theme/" + exit 0 + fi + - | + echo "🚀 Deploying Keycloak theme..." + mkdir -p ~/.kube + echo "$KUBE_CONFIG_CONTENT" > ~/.kube/config + chmod 600 ~/.kube/config + sed -i "s|https://127.0.0.1:6443|https://10.10.10.100:6443|g" ~/.kube/config + + export KEYCLOAK_NAMESPACE="auth" + export IMAGE_TAG=$(echo $DRONE_COMMIT_SHA | cut -c1-7) + export KEYCLOAK_IMAGE="registry.vigdorov.ru/library/keycloak-team-planner:$IMAGE_TAG" + + kubectl cluster-info + kubectl set image statefulset/keycloak-keycloakx keycloak=$KEYCLOAK_IMAGE -n $KEYCLOAK_NAMESPACE + + echo "📋 Waiting for rollout..." if ! kubectl rollout status statefulset/keycloak-keycloakx -n $KEYCLOAK_NAMESPACE --timeout=180s; then echo "❌ Rollout failed! Collecting diagnostics..." kubectl get pods -n $KEYCLOAK_NAMESPACE -l app.kubernetes.io/name=keycloakx -o wide kubectl describe statefulset keycloak-keycloakx -n $KEYCLOAK_NAMESPACE exit 1 fi - - echo "✅ Keycloak theme deployed (image:$IMAGE_TAG)" + echo "✅ Keycloak theme deployed (image:$IMAGE_TAG)"