From 948c3f20c50dfd63f6309a5c15ef65877ca091f1 Mon Sep 17 00:00:00 2001 From: Koen van den Heuvel Date: Fri, 16 Aug 2024 12:31:46 +0000 Subject: [PATCH] add: github actions deployment workflow --- .github/workflows/deployment.yml | 80 ++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index e69de29..3492f0d 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -0,0 +1,80 @@ +name: Docker Build and Deploy + +on: + push: + branches: [reminders] + +env: + APP_NAME: yahoo-auction-discord-alert-bot + IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/yahoo-auction-discord-alert-bot:${{ github.sha }} + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ env.IMAGE_NAME }} + + deploy: + runs-on: ubuntu-latest + needs: build + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Copy SSH Key + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.SSH_PRIVATE_KEY }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + + - name: Deploy to Server + env: + IMAGE: ${{ env.IMAGE_NAME }} + APP: ${{ env.APP_NAME }} + SERVER_HOST: ${{ secrets.SERVER_HOST }} + SERVER_USER: ${{ secrets.SERVER_USER }} + JUMP_HOST: ${{ secrets.JUMP_HOST }} + JUMP_USER: ${{ secrets.JUMP_USER }} + - name: Deploy to Server + env: + IMAGE: ${{ env.IMAGE_NAME }} + APP: ${{ env.APP_NAME }} + SERVER_HOST: ${{ secrets.SERVER_HOST }} + SERVER_USER: ${{ secrets.SERVER_USER }} + JUMP_HOST: ${{ secrets.JUMP_HOST }} + JUMP_USER: ${{ secrets.JUMP_USER }} + run: | + ssh -o StrictHostKeyChecking=no -J $JUMP_USER@$JUMP_HOST $SERVER_USER@$SERVER_HOST << 'ENDSSH' + set -e + IMAGE="${{ env.IMAGE }}" + APP="${{ env.APP }}" + echo "Pulling the latest image: $IMAGE" + docker pull "$IMAGE" + + echo "Stopping existing container if it exists" + docker stop "$APP" || true + + echo "Removing existing container if it exists" + docker rm "$APP" || true + + echo "Running new container" + docker run -d --name "$APP" -p 80:80 "$IMAGE" + ENDSSH \ No newline at end of file