From ce091044c0209aaa5578a225d694ec85cee45b2b Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sat, 6 Dec 2025 23:23:24 +0330 Subject: [PATCH] feat: Add CI/CD workflows for stage and Kubernetes deployment --- .gitea/workflows/frontoffice-stage.yml | 17 +++++ .gitea/workflows/kub-deploy.yml | 91 ++++++++++++++++++++++++++ .gitignore | 2 +- 3 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 .gitea/workflows/frontoffice-stage.yml create mode 100644 .gitea/workflows/kub-deploy.yml diff --git a/.gitea/workflows/frontoffice-stage.yml b/.gitea/workflows/frontoffice-stage.yml new file mode 100644 index 0000000..29a057b --- /dev/null +++ b/.gitea/workflows/frontoffice-stage.yml @@ -0,0 +1,17 @@ + +name: Push nuget and docker image Actions Workflow + +on: + push: + branches: + - stage +jobs: + Deploy: + runs-on: windows + steps: + - name: Checkout + uses: https://git.afrino.co/actions/checkout@v3 + - name: Setup dotnet + uses: https://git.afrino.co/actions/setup-dotnet@v3 + with: + dotnet-version: 7.0.x diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml new file mode 100644 index 0000000..db8e076 --- /dev/null +++ b/.gitea/workflows/kub-deploy.yml @@ -0,0 +1,91 @@ +name: Build and Deploy to Kubernetes + +on: + push: + branches: + - kub-stage + +env: + REGISTRY: gitea-svc:3000 + IMAGE_NAME: admin/frontoffice-bff + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + container: + image: docker:latest + options: --privileged + env: + HTTP_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + HTTPS_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + NO_PROXY: localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8 + steps: + - name: Install dependencies + run: | + apk add --no-cache git curl + + # Install kubectl + curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" + chmod +x kubectl + mv kubectl /usr/local/bin/ + + - name: Start Docker daemon with insecure registry + run: | + mkdir -p /etc/docker + cat > /etc/docker/daemon.json << 'DAEMON' + { + "insecure-registries": ["194.5.195.53:30080", "gitea-svc:3000"] + } + DAEMON + mkdir -p ~/.docker + cat > ~/.docker/config.json << 'CONF' + { + "proxies": { + "default": { + "httpProxy": "http://proxyuser:87zH26nbqT2@46.249.98.211:3128", + "httpsProxy": "http://proxyuser:87zH26nbqT2@46.249.98.211:3128", + "noProxy": "localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8" + } + } + } + CONF + dockerd & + for i in $(seq 1 30); do + docker info >/dev/null 2>&1 && break || sleep 2 + done + docker info + + - name: Checkout code + run: | + git clone --depth 1 --branch kub-stage http://gitea-svc:3000/admin/FrontOffice.BFF.git . + git log -1 --format="%H %s" + + - name: Build Docker Image + run: | + cd src + docker build -f FrontOffice.BFF.WebApi/Dockerfile \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \ + --build-arg HTTP_PROXY=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 \ + --build-arg HTTPS_PROXY=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 \ + . + + + - 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: Deploy to Kubernetes + run: | + # Setup kubeconfig + mkdir -p ~/.kube + echo "${{ secrets.KUBECONFIG }}" | base64 -d > ~/.kube/config + + # Restart deployment to pull new image + kubectl rollout restart deployment/frontOffice-bff || echo "Deployment doesn't exist yet" + + # Wait for rollout to complete + kubectl rollout status deployment/frontOffice-bff --timeout=5m || echo "Deployment rollout pending" + diff --git a/.gitignore b/.gitignore index cc4180b..f183a07 100644 --- a/.gitignore +++ b/.gitignore @@ -492,5 +492,5 @@ fabric.properties .idea/caches/build_file_checksums.ser /src/.idea -/.gitea + src/.dockerignore