name: Build Runner Images on: push: branches: [main] paths: - k8s/infra/forgejo-runner-images/Dockerfile.* - .gitea/workflows/build-runner-images.yml pull_request: branches: [main] paths: - k8s/infra/forgejo-runner-images/Dockerfile.* env: REGISTRY: forgejo.riotpiao.com jobs: build: name: Build and Push Runner Images if: github.event_name == 'push' && github.ref == 'refs/heads/main' 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 image run: | IMAGE="${REGISTRY}/rock/forgejo-runner-golang:${{ steps.sha.outputs.short_sha }}" docker build --no-cache \ -f k8s/infra/forgejo-runner-images/Dockerfile.golang \ -t "${IMAGE}" \ -t "${REGISTRY}/rock/forgejo-runner-golang:latest" \ . docker push "${IMAGE}" docker push "${REGISTRY}/rock/forgejo-runner-golang:latest" echo "✓ Pushed golang: ${IMAGE}" - name: Build and push node image run: | IMAGE="${REGISTRY}/rock/forgejo-runner-node:${{ steps.sha.outputs.short_sha }}" docker build --no-cache \ -f k8s/infra/forgejo-runner-images/Dockerfile.node \ -t "${IMAGE}" \ -t "${REGISTRY}/rock/forgejo-runner-node:latest" \ . docker push "${IMAGE}" docker push "${REGISTRY}/rock/forgejo-runner-node:latest" echo "✓ Pushed node: ${IMAGE}" - name: Build and push rust image run: | IMAGE="${REGISTRY}/rock/forgejo-runner-rust:${{ steps.sha.outputs.short_sha }}" docker build --no-cache \ -f k8s/infra/forgejo-runner-images/Dockerfile.rust \ -t "${IMAGE}" \ -t "${REGISTRY}/rock/forgejo-runner-rust:latest" \ . docker push "${IMAGE}" docker push "${REGISTRY}/rock/forgejo-runner-rust:latest" echo "✓ Pushed rust: ${IMAGE}" - name: Prune unused images run: docker image prune -a --force 2>&1 | tail -3 || true