diff --git a/.gitea/workflows/build-runner-images.yml b/.gitea/workflows/build-runner-images.yml new file mode 100644 index 0000000..9be5692 --- /dev/null +++ b/.gitea/workflows/build-runner-images.yml @@ -0,0 +1,67 @@ +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 + +jobs: + build-runners: + runs-on: golang + 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: 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 + if: contains(github.event.head_commit.modified, 'Dockerfile.golang') + run: | + docker build -f k8s/infra/forgejo-runner/Dockerfile.golang \ + -t "${IMAGE_BASE}/forgejo-runner-golang:${{ steps.sha.outputs.short_sha }}" \ + -t "${IMAGE_BASE}/forgejo-runner-golang:latest" \ + . + docker push "${IMAGE_BASE}/forgejo-runner-golang:${{ steps.sha.outputs.short_sha }}" + docker push "${IMAGE_BASE}/forgejo-runner-golang:latest" + echo "✓ Pushed golang-runner" + + - name: Build and push rust-runner + if: contains(github.event.head_commit.modified, 'Dockerfile.rust') + run: | + docker build -f k8s/infra/forgejo-runner/Dockerfile.rust \ + -t "${IMAGE_BASE}/forgejo-runner-rust:${{ steps.sha.outputs.short_sha }}" \ + -t "${IMAGE_BASE}/forgejo-runner-rust:latest" \ + . + docker push "${IMAGE_BASE}/forgejo-runner-rust:${{ steps.sha.outputs.short_sha }}" + docker push "${IMAGE_BASE}/forgejo-runner-rust:latest" + echo "✓ Pushed rust-runner" + + - name: Build and push node-runner + if: contains(github.event.head_commit.modified, 'Dockerfile.node') + run: | + docker build -f k8s/infra/forgejo-runner/Dockerfile.node \ + -t "${IMAGE_BASE}/forgejo-runner-node:${{ steps.sha.outputs.short_sha }}" \ + -t "${IMAGE_BASE}/forgejo-runner-node:latest" \ + . + docker push "${IMAGE_BASE}/forgejo-runner-node:${{ steps.sha.outputs.short_sha }}" + docker push "${IMAGE_BASE}/forgejo-runner-node:latest" + echo "✓ Pushed node-runner"