diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 877bc2b..d92cc2a 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -11,8 +11,51 @@ on: - ".gitignore" jobs: + dockerhub: + name: Publish Docker Image(s) to Dockerhub + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Cache Docker layers for Odins' Vault + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache-odins-vault + key: ${{ runner.os }}-buildx-odins-vault-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx-odins-vault- + + - name: Build & Push Odins' Vault + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/odins-vault:latest + cache-from: type=local,src=/tmp/.buildx-cache-odins-vault + cache-to: type=local,dest=/tmp/.buildx-cache-odins-vault-new,mode=max + + - name: Move Odins' Vault cache + run: | + rm -rf /tmp/.buildx-cache-odins-vault + mv /tmp/.buildx-cache-odins-vault-new /tmp/.buildx-cache-odins-vault + push: - name: Push Stage + name: Push Code Stage + needs: dockerhub runs-on: ubuntu-latest steps: @@ -32,13 +75,13 @@ jobs: sudo git fetch origin sudo git reset --hard origin/main - build: - name: Build Stage + pull: + name: Pull Image Stage needs: push runs-on: ubuntu-latest steps: - - name: Build the latest container(s) + - name: Pull the latest images(s) uses: appleboy/ssh-action@master env: PROJECT_DIR: ${{ secrets.PROJECT_DIR }} @@ -51,11 +94,11 @@ jobs: script_stop: true script: | cd "${PROJECT_DIR}/" - sudo docker compose build + sudo docker compose pull deploy: name: Deploy Stage - needs: [push, build] + needs: pull runs-on: ubuntu-latest steps: diff --git a/docker-compose.yml b/docker-compose.yml index a6a3841..b33d9de 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,24 +1,26 @@ services: - odins_vault: - build: "." - restart: always - networks: - metaploy-network: - aliases: - - odins_vault - volumes: - - nginx-config-volume:/etc/nginx/sites-enabled - - odins-vault:/srv/static + odins_vault: + image: metakgporg/odins-vault + container_name: odins-vault + build: . + networks: + metaploy-network: + aliases: + - odins_vault + volumes: + - nginx-config-volume:/etc/nginx/sites-enabled + - odins-vault:/srv/static + restart: always networks: - metaploy-network: - external: true - name: metaploy-network + metaploy-network: + external: true + name: metaploy-network volumes: - nginx-config-volume: - external: true - name: metaploy-nginx-config-volume - odins-vault: - external: true - name: odins-vault + nginx-config-volume: + external: true + name: metaploy-nginx-config-volume + odins-vault: + external: true + name: odins-vault