diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index cb53dc7..728016f 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -1,14 +1,56 @@ -name: Deploy Docker container +name: CI/CD Deploy run-name: ${{ gitea.actor }} is deploying to PROD servers. -on: [ push, fork, pull ] +on: + push: + branches: [ main ] jobs: - Deploy: + test: runs-on: ubuntu-latest steps: - name: Check out repository code uses: actions/checkout@v4 - - name: SSH to remote server + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + - name: Install dependencies + run: npm ci + - name: Build + run: npm run build + - name: Run tests + run: npm test + + build-push: + needs: test + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Log in to Gitea Container Registry + uses: docker/login-action@v3 + with: + registry: git.hacecalor.net + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_PASSWORD }} + - name: Build and push image + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: | + git.hacecalor.net/ichitux/zlb:latest + git.hacecalor.net/ichitux/zlb:${{ gitea.sha }} + - run: 'echo "Image ${{ gitea.sha }} pushed to registry. Job status: ${{ job.status }}"' + + deploy: + needs: build-push + runs-on: ubuntu-latest + steps: + - name: SSH to remote server and update Swarm service uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.HOST }} @@ -18,7 +60,8 @@ jobs: script: | cd /home/zouklambadabcn.com/public_html/ git pull - docker compose down - docker compose up -d --build + docker login git.hacecalor.net -u ${{ secrets.REGISTRY_USERNAME }} -p ${{ secrets.REGISTRY_PASSWORD }} + docker compose pull + docker stack deploy -c docker-compose.yml zlb docker image prune -f - - run: echo "🍏 This job's status is ${{ job.status }}." + - run: 'echo "This job status is ${{ job.status }}"' diff --git a/docker-compose.yml b/docker-compose.yml index f0323ce..6e37810 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,19 @@ services: zlb: + image: git.hacecalor.net/ichitux/zlb:latest build: context: . dockerfile: Dockerfile ports: - "35207:80" restart: unless-stopped + deploy: + replicas: 1 + update_config: + order: start-first + failure_action: rollback + restart_policy: + condition: any + placement: + constraints: + - node.role == manager