diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 97343cf..22b1d44 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -15,8 +15,117 @@ on: workflow_dispatch: # This allows us to trigger the workflow manually 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 Wiki DB + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache-wiki-db + key: ${{ runner.os }}-buildx-wiki-db-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx-wiki-db- + + - name: Build & Push Wiki DB + uses: docker/build-push-action@v5 + with: + context: ./mysql + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/wiki-db:latest + cache-from: type=local,src=/tmp/.buildx-cache-wiki-db + cache-to: type=local,dest=/tmp/.buildx-cache-wiki-db-new,mode=max + + - name: Move Wiki DB cache + run: | + rm -rf /tmp/.buildx-cache-wiki-db + mv /tmp/.buildx-cache-wiki-db-new /tmp/.buildx-cache-wiki-db + + - name: Cache Docker layers for Wiki Jobs + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache-wiki-jobs + key: ${{ runner.os }}-buildx-wiki-jobs-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx-wiki-jobs- + + - name: Build & Push Wiki Jobs + uses: docker/build-push-action@v5 + with: + context: ./jobs + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/wiki-jobs:latest + cache-from: type=local,src=/tmp/.buildx-cache-wiki-jobs + cache-to: type=local,dest=/tmp/.buildx-cache-wiki-jobs-new,mode=max + + - name: Move Wiki Jobs cache + run: | + rm -rf /tmp/.buildx-cache-wiki-jobs + mv /tmp/.buildx-cache-wiki-jobs-new /tmp/.buildx-cache-wiki-jobs + + - name: Cache Docker layers for Wiki Nginx + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache-wiki-nginx + key: ${{ runner.os }}-buildx-wiki-nginx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx-wiki-nginx- + + - name: Build & Push Wiki Nginx + uses: docker/build-push-action@v5 + with: + context: ./nginx + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/wiki-nginx:latest + cache-from: type=local,src=/tmp/.buildx-cache-wiki-nginx + cache-to: type=local,dest=/tmp/.buildx-cache-wiki-nginx-new,mode=max + + - name: Move Wiki Nginx cache + run: | + rm -rf /tmp/.buildx-cache-wiki + mv /tmp/.buildx-cache-wiki-nginx-new /tmp/.buildx-cache-wiki-nginx + + - name: Cache Docker layers for Wiki Mediawiki + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache-wiki + key: ${{ runner.os }}-buildx-wiki-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx-wiki- + + - name: Build & Push Wiki Mediawiki + uses: docker/build-push-action@v5 + with: + context: ./mediawiki + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/wiki:latest + cache-from: type=local,src=/tmp/.buildx-cache-wiki + cache-to: type=local,dest=/tmp/.buildx-cache-wiki-new,mode=max + + - name: Move Wiki Mediawiki cache + run: | + rm -rf /tmp/.buildx-cache-wiki-nginx + mv /tmp/.buildx-cache-wiki-new /tmp/.buildx-cache-wiki + push: - name: Push Stage + name: Push Code Stage + needs: dockerhub runs-on: ubuntu-latest steps: @@ -36,13 +145,13 @@ jobs: sudo git fetch origin sudo git reset --hard origin/master - 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 }} @@ -56,11 +165,11 @@ jobs: script_stop: true script: | cd "${PROJECT_DIR}/" - sudo docker compose -f docker-compose.prod.yml build + sudo docker compose -f docker-compose.prod.yml pull deploy: name: Deploy Stage - needs: [push, build] + needs: pull runs-on: ubuntu-latest steps: diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index f624002..57ebdd2 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -3,6 +3,8 @@ include: services: jobs: + image: metakgporg/wiki-jobs + container_name: wiki-jobs build: "./jobs" restart: always networks: diff --git a/docker-compose.yml b/docker-compose.yml index 0e919b4..6312fad 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,7 @@ services: mysql: + image: metakgporg/wiki-db + container_name: wiki-db build: "./mysql" restart: always networks: @@ -15,6 +17,8 @@ services: - MYSQL_PASSWORD=${MYSQL_PASSWORD} mediawiki: + image: metakgporg/wiki + container_name: wiki build: "./mediawiki" restart: always networks: @@ -37,6 +41,8 @@ services: - DEV=$DEV nginx: + image: metakgporg/wiki-nginx + container_name: wiki-nginx build: "./nginx" restart: always networks: @@ -64,4 +70,4 @@ volumes: static-volume: nginx-config-volume: external: true - name: metaploy-nginx-config-volume \ No newline at end of file + name: metaploy-nginx-config-volume