From 95f8cb9f7328a9b13109b6aa75926a756f1d3575 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Thu, 29 Jan 2026 06:12:22 +0330 Subject: [PATCH] refactor: simplified pipeline with offline Nexus + auto deploy --- .gitea/workflows/kub-deploy.yml | 53 +++++++++++---------------------- 1 file changed, 17 insertions(+), 36 deletions(-) diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml index ea673aa..e6e9c65 100644 --- a/.gitea/workflows/kub-deploy.yml +++ b/.gitea/workflows/kub-deploy.yml @@ -1,4 +1,4 @@ -name: Build and Deploy +name: Build and Deploy to Kubernetes on: push: @@ -6,67 +6,48 @@ on: - kub-stage env: - REGISTRY: gitea-svc:3000 + REGISTRY: 194.5.195.53:30080 IMAGE_NAME: admin/frontoffice + K8S_SERVER: 194.5.195.53 jobs: - build: + build-and-deploy: runs-on: ubuntu-latest container: - image: docker:latest + image: 194.5.195.53:32082/docker:latest options: --privileged steps: - - name: Start Docker daemon with insecure registry + - name: Start Docker daemon run: | mkdir -p /etc/docker cat > /etc/docker/daemon.json << 'DAEMON' { -<<<<<<< HEAD - "insecure-registries": ["194.5.195.53:30080", "gitea-svc:3000"] -======= - "insecure-registries": ["194.5.195.53:32500", "194.5.195.53:32082", "git.kbs1.ir", "gitea-svc:3000"], - "dns": ["0.0.0.0"] ->>>>>>> production + "insecure-registries": ["194.5.195.53:30080", "194.5.195.53:32500", "194.5.195.53:32082"] } DAEMON - - # بدون اینترنت - فقط از cached images dockerd & - for i in $(seq 1 30); do - docker info >/dev/null 2>&1 && break || sleep 2 - done - docker info - - # بررسی وجود cached images - echo "📊 Checking cached base images..." - docker images | grep -E "mcr.microsoft.com|nginx" || echo "⚠️ WARNING: Base images not cached!" + for i in $(seq 1 30); do docker info >/dev/null 2>&1 && break || sleep 2; done - name: Checkout code run: | git clone --depth 1 --branch kub-stage http://gitea-svc:3000/admin/FrontOffice.git . - git log -1 --format="%H %s" - name: Build Docker Image run: | cd src - # استفاده از cached base images (بدون دانلود) - DOCKER_BUILDKIT=0 docker build -f FrontOffice.Main/Dockerfile \ - -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ - -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \ - . - + docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest -f FrontOffice.Main/Dockerfile . - name: Push to Registry run: | echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ env.REGISTRY }} -u admin --password-stdin - docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest - - name: Build and Push Complete + - name: Deploy to Kubernetes run: | - echo "🎉 Build and push completed successfully!" - echo "📦 Image pushed to: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}" - echo "📦 Latest tag: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest" - echo "" - echo "🚀 To deploy manually on server:" - echo "kubectl set image deployment/frontoffice frontoffice=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}" + which sshpass || apk add --no-cache openssh-client sshpass + export SSHPASS="${{ secrets.SERVER_PASSWORD }}" + sshpass -e ssh -o StrictHostKeyChecking=no root@${{ env.K8S_SERVER }} " + kubectl rollout restart deployment/frontoffice + kubectl rollout status deployment/frontoffice --timeout=180s + " + echo "✅ Deployed!"