name: Build and Deploy on: push: branches: [ main ] workflow_dispatch: release: types: [created] jobs: build: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to GitHub Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Docker image uses: docker/build-push-action@v4 with: context: . push: true platforms: linux/amd64, linux/arm64/v8 tags: ghcr.io/marcus7i/marcus7i.net:${{ github.ref_name }},ghcr.io/marcus7i/marcus7i.net:latest deploy: needs: build runs-on: ubuntu-latest steps: - name: SSH and deploy uses: appleboy/ssh-action@master with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USERNAME }} key: ${{ secrets.SSH_PRIVATE_KEY }} port: ${{ secrets.SSH_PORT }} script: | cd /var/www/marcus7i.net # Create .env file with secrets echo "DISCORD_WEBHOOK=${{ secrets.DISCORD_WEBHOOK }}" > .env # Pull the latest image docker pull ghcr.io/marcus7i/marcus7i.net:latest # Stop and start the container docker compose down docker compose up -d # Clean up unused images docker image prune -f