name: Build and Push Docker Image on: push: branches: - master # Trigger on push to the main branch; adjust as needed jobs: build-and-push: runs-on: ubuntu-latest # Use a runner with Docker support container: ghcr.io/catthehacker/ubuntu:act-latest # Image with Docker pre-installed outputs: sha_short: ${{ steps.vars.outputs.sha_short }} steps: # Checkout the repository code - name: Checkout repository uses: actions/checkout@v4 - name: Set outputs id: vars run: | echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT # Set up Docker Buildx for building the image - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: driver: remote endpoint: 'tcp://buildkitd:1234' # Log in to the Gitea container registry - name: Log in to Gitea Container Registry uses: docker/login-action@v3 with: registry: git.dubyatp.xyz username: williamp password: ${{ secrets.ACTIONS_TOKEN }} # Personal Access Token for authentication # Build and push the Docker image - name: Build and Push Docker Image uses: docker/build-push-action@v6 with: context: . # Build context (current directory) file: ./Dockerfile # Path to Dockerfile platforms: "linux/amd64,linux/arm64" push: true # Push to registry after building tags: | git.dubyatp.xyz/williamp/yt-dlp-bot:latest git.dubyatp.xyz/williamp/yt-dlp-bot:${{steps.vars.outputs.sha_short }} # Tags the image with 'latest' and the commit SHA deploy-on-green: needs: build-and-push runs-on: ubuntu-latest if: ${{ success() }} steps: - name: Checkout target repository uses: actions/checkout@v4 with: repository: infrastructure/core-apps token: ${{ secrets.ACTIONS_TOKEN }} ref: main - name: Update image tag in deployment.yaml uses: mikefarah/yq@master with: cmd: yq eval '.spec.template.spec.containers[0].image = "git.dubyatp.xyz/williamp/yt-dlp-bot:${{ needs.build-and-push.outputs.sha_short }}"' -i yt-dlp-bot/deployment.yaml - name: Commit changes run: | git config --local user.email "actions@noreply.dubyatp.xyz" git config --local user.name "actions[bot]" git commit -a -m "yt-dlp-bot: deploy update to ${{ needs.build-and-push.outputs.sha_short }}" - name: Push changes uses: ad-m/github-push-action@v0.8.0 with: github_token: ${{ secrets.ACTIONS_TOKEN }} repository: infrastructure/core-apps branch: main