Repo for CI and infrastructure required to maintain llm-d org member repos.
This repo provides reusable GitHub Actions workflows that standardize CI/CD across all llm-d repos. Instead of copy-pasting workflow files, each repo calls the shared version with a thin caller workflow.
| Workflow | Purpose | Caller Trigger |
|---|---|---|
reusable-prow-commands.yml |
Prow-style commands (/lgtm, /approve, /assign, etc.) | issue_comment |
reusable-prow-automerge.yml |
Auto-merge PRs with lgtm label |
schedule (every 5 min) |
reusable-prow-remove-lgtm.yml |
Remove lgtm label on PR push |
pull_request |
reusable-stale.yml |
Mark stale issues/PRs, then rotten, then close | schedule (daily) |
reusable-unstale.yml |
Remove stale/rotten labels on activity | issues + issue_comment |
reusable-signed-commits.yml |
Enforce signed/DCO commits | pull_request_target |
reusable-non-main-gatekeeper.yml |
Block PRs to non-main branches | pull_request |
Create a thin caller workflow in your repo's .github/workflows/ directory. Each caller is typically 8-12 lines:
# .github/workflows/prow-github.yml
name: Prow Commands
on:
issue_comment:
types: [created]
jobs:
prow:
uses: llm-d/llm-d-infra/.github/workflows/reusable-prow-commands.yml@main
permissions:
issues: write
pull-requests: write# .github/workflows/prow-pr-automerge.yml
name: Prow Auto-merge
on:
schedule:
- cron: "*/5 * * * *"
jobs:
auto-merge:
uses: llm-d/llm-d-infra/.github/workflows/reusable-prow-automerge.yml@main# .github/workflows/prow-pr-remove-lgtm.yml
name: Prow Remove LGTM
on: pull_request
jobs:
remove-lgtm:
uses: llm-d/llm-d-infra/.github/workflows/reusable-prow-remove-lgtm.yml@main# .github/workflows/stale.yaml
name: Mark Stale Issues
on:
schedule:
- cron: '0 1 * * *'
jobs:
stale:
uses: llm-d/llm-d-infra/.github/workflows/reusable-stale.yml@main
permissions:
issues: write
pull-requests: write# .github/workflows/unstale.yaml
name: Unstale Issues
on:
issues:
types: [reopened]
issue_comment:
types: [created]
jobs:
unstale:
uses: llm-d/llm-d-infra/.github/workflows/reusable-unstale.yml@main
permissions:
issues: write# .github/workflows/ci-signed-commits.yaml
name: Check Signed Commits
on: pull_request_target
jobs:
signed-commits:
uses: llm-d/llm-d-infra/.github/workflows/reusable-signed-commits.yml@main
permissions:
contents: read
pull-requests: write# .github/workflows/non-main-gatekeeper.yml
name: Non-Main Gatekeeper
on:
pull_request:
types: [opened, edited, synchronize, reopened]
jobs:
gatekeeper:
uses: llm-d/llm-d-infra/.github/workflows/reusable-non-main-gatekeeper.yml@mainMost workflows accept optional inputs. See each workflow file for available inputs and defaults:
jobs:
stale:
uses: llm-d/llm-d-infra/.github/workflows/reusable-stale.yml@main
with:
days-before-issue-stale: 60 # override default of 90The templates/ directory contains canonical configuration files for adoption across repos:
| Template | Purpose | Copy To |
|---|---|---|
dependabot.yml |
Automated dependency updates for Go, Actions, Docker | .github/dependabot.yml |
.pre-commit-config.yaml |
File hygiene, shell/Dockerfile/markdown/YAML linting | repo root |
To migrate from copy-pasted workflows to shared reusable ones:
- Replace each local workflow file with the corresponding thin caller (see examples above)
- Remove any duplicate logic now handled by the reusable workflow
- Test by opening a PR and verifying workflows trigger correctly
The sync-caller-workflows.yml checks which consuming repos still use local copies vs. shared reusable workflows. It runs when reusable workflows change and generates an adoption report in the workflow summary.