name: Build and push runner images on: push: paths: - 'k8s/infra/forgejo-runner/Dockerfile.golang' - 'k8s/infra/forgejo-runner/Dockerfile.rust' - 'k8s/infra/forgejo-runner/Dockerfile.node' branches: - main pull_request: paths: - 'k8s/infra/forgejo-runner/Dockerfile.golang' - 'k8s/infra/forgejo-runner/Dockerfile.rust' - 'k8s/infra/forgejo-runner/Dockerfile.node' - '.gitea/workflows/build-runner-images.yml' jobs: build-runners: runs-on: node env: REGISTRY: forgejo.riotpiao.com IMAGE_BASE: forgejo.riotpiao.com/rock steps: - 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: Build all runner images (test on PR, push on main) run: | set -e for RUNNER in golang rust node; do echo "📦 Building ${RUNNER}-runner..." docker build -f "k8s/infra/forgejo-runner/Dockerfile.${RUNNER}" \ -t "${IMAGE_BASE}/forgejo-runner-${RUNNER}:${{ steps.sha.outputs.short_sha }}" \ -t "${IMAGE_BASE}/forgejo-runner-${RUNNER}:latest" \ . echo "✅ Built ${RUNNER}-runner" done - name: Push images (main only) if: github.event_name == 'push' run: | echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" \ --username "${REGISTRY_USER}" --password-stdin for RUNNER in golang rust node; do echo "📤 Pushing ${RUNNER}-runner:${{ steps.sha.outputs.short_sha }}" docker push "${IMAGE_BASE}/forgejo-runner-${RUNNER}:${{ steps.sha.outputs.short_sha }}" docker push "${IMAGE_BASE}/forgejo-runner-${RUNNER}:latest" echo "✅ Pushed ${RUNNER}-runner" done echo "✅ All runner images pushed to registry" env: REGISTRY_USER: ${{ secrets.FORGEJO_REGISTRY_USER }} REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }}