78 lines
2.7 KiB
YAML
78 lines
2.7 KiB
YAML
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
|
|
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 |