name: Build & Push Runner Images on: push: branches: [main] workflow_dispatch: # Manual trigger schedule: - cron: '0 2 * * 0' # Weekly on Sunday 2 AM UTC (ensure fresh images) env: REGISTRY: forgejo.riotpiao.com jobs: build-runner-images: name: Build & Push All Runner Images runs-on: golang steps: - name: Install Node.js and Docker run: | apt-get update apt-get install -y nodejs docker.io - name: Checkout code uses: actions/checkout@v4 - name: Get short SHA id: sha run: | SHORT_SHA=$(git rev-parse --short HEAD) echo "short_sha=${SHORT_SHA}" >> $GITHUB_OUTPUT - name: Registry login run: | echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" \ --username "${REGISTRY_USER}" --password-stdin env: REGISTRY_USER: ${{ secrets.FORGEJO_REGISTRY_USER }} REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }} - name: Build and push Golang runner image run: | IMAGE="${REGISTRY}/rock/forgejo-runner-golang" echo "Building: ${IMAGE}:${{ steps.sha.outputs.short_sha }}" docker build --no-cache \ -f k8s/infra/forgejo-runner-images/Dockerfile.golang \ -t "${IMAGE}:${{ steps.sha.outputs.short_sha }}" \ -t "${IMAGE}:latest" \ . docker push "${IMAGE}:${{ steps.sha.outputs.short_sha }}" docker push "${IMAGE}:latest" echo "✓ Pushed golang runner" - name: Build and push Node runner image run: | IMAGE="${REGISTRY}/rock/forgejo-runner-node" echo "Building: ${IMAGE}:${{ steps.sha.outputs.short_sha }}" docker build --no-cache \ -f k8s/infra/forgejo-runner-images/Dockerfile.node \ -t "${IMAGE}:${{ steps.sha.outputs.short_sha }}" \ -t "${IMAGE}:latest" \ . docker push "${IMAGE}:${{ steps.sha.outputs.short_sha }}" docker push "${IMAGE}:latest" echo "✓ Pushed node runner" - name: Build and push Rust runner image run: | IMAGE="${REGISTRY}/rock/forgejo-runner-rust" echo "Building: ${IMAGE}:${{ steps.sha.outputs.short_sha }}" docker build --no-cache \ -f k8s/infra/forgejo-runner-images/Dockerfile.rust \ -t "${IMAGE}:${{ steps.sha.outputs.short_sha }}" \ -t "${IMAGE}:latest" \ . docker push "${IMAGE}:${{ steps.sha.outputs.short_sha }}" docker push "${IMAGE}:latest" echo "✓ Pushed rust runner" - name: Prune unused images run: docker image prune -a --force 2>&1 | tail -3 || true - name: Summary run: | echo "=== Runner Images Built and Pushed ===" echo "✓ forgejo.riotpiao.com/rock/forgejo-runner-golang:latest" echo "✓ forgejo.riotpiao.com/rock/forgejo-runner-node:latest" echo "✓ forgejo.riotpiao.com/rock/forgejo-runner-rust:latest"