diff --git a/.gitea/workflows/main.yml b/.gitea/workflows/main.yml index 2d4bcc4..42a8f9a 100644 --- a/.gitea/workflows/main.yml +++ b/.gitea/workflows/main.yml @@ -1,4 +1,4 @@ -name: Build, Push, and Deploy with Blue/Green or Canary +name: Build, Push, and Deploy to Nomad on: push: @@ -6,7 +6,7 @@ on: - main jobs: - build-push: + docker-nomad: runs-on: self-hosted steps: - name: Check out code @@ -18,54 +18,46 @@ jobs: - name: Build Docker Image run: | COMMIT_HASH=$(git rev-parse --short HEAD) - docker build -t registry.i80.dk/gitea/lifefaq:green -t registry.i80.dk/gitea/lifefaq:${COMMIT_HASH} . + docker build -t registry.i80.dk/gitea/lifefaq:latest -t registry.i80.dk/gitea/lifefaq:${COMMIT_HASH} . + - name: Push Docker Image run: | COMMIT_HASH=$(git rev-parse --short HEAD) + echo "registry.i80.dk/gitea/lifefaq:latest" + echo "registry.i80.dk/gitea/lifefaq:${COMMIT_HASH}" docker push registry.i80.dk/gitea/lifefaq:${COMMIT_HASH} - docker push registry.i80.dk/gitea/lifefaq:green + docker push registry.i80.dk/gitea/lifefaq:latest - blue-green-deploy: - runs-on: self-hosted - needs: build-push - steps: - - name: Deploy Green Version + + - name: Validate Nomad Job env: NOMAD_ADDR: https://nomad.i80.dk - run: nomad job run -var="image=registry.i80.dk/gitea/lifefaq:green" .gitea/workflows/nomad-job-green.hcl + run: nomad job validate .gitea/workflows/nomad-job.hcl - - name: Switch Traffic to Green - run: ssh runner@nomad sudo /opt/nginx_updater/venv/bin/python3 /opt/nginx_updater/nginx_updater.py lifefaq --target green - - - name: Validate Deployment - run: curl -f https://lifefaq.i80.dk/health || exit 1 - - - name: Purge Old Blue Version - if: success() + - name: Stop old deployment env: NOMAD_ADDR: https://nomad.i80.dk - run: nomad job stop -purge lifefaq-blue + run: nomad job stop -purge -no-shutdown-delay lifefaq + continue-on-error: true - canary-deploy: - runs-on: self-hosted - needs: build-push - steps: - - name: Deploy Canary Version + + - name: Apply Nomad Job env: NOMAD_ADDR: https://nomad.i80.dk - run: nomad job run -var="image=registry.i80.dk/gitea/lifefaq:${COMMIT_HASH}" .gitea/workflows/nomad-job-canary.hcl + run: nomad job run .gitea/workflows/nomad-job.hcl - - name: Update Forwarder for Canary (10% traffic) - run: ssh runner@nomad sudo /opt/nginx_updater/venv/bin/python3 /opt/nginx_updater/update_forwarder.py --subdomain lifefaq --weight 10 + - name: Update Nginx Configuration + run: ssh runner@nomad sudo /opt/nginx_updater/venv/bin/python3 /opt/nginx_updater/nginx_updater.py lifefaq - - name: Monitor and Scale Canary - run: | - # Monitor performance for 10 minutes - sleep 600 - curl -f https://lifefaq.i80.dk/health || exit 1 - ssh runner@nomad sudo /opt/nginx_updater/venv/bin/python3 /opt/nginx_updater/update_forwarder.py --subdomain lifefaq --weight 50 + - name: Update Forwarder Configuration + run: ssh runner@nomad sudo /opt/nginx_updater/venv/bin/python3 /opt/nginx_updater/update_forwarder.py --subdomain lifefaq - - name: Complete Canary Rollout - if: success() - run: ssh runner@nomad sudo /opt/nginx_updater/venv/bin/python3 /opt/nginx_updater/update_forwarder.py --subdomain lifefaq --weight 100 + +# - name: Restart Nomad Job +# env: +# NOMAD_ADDR: https://nomad.i80.dk +# run: | +# nomad job stop lifefaq +# sleep 5 # Optional: Wait to ensure the old allocation is stopped +# nomad job run .gitea/workflows/nomad-job.hcl