ci: align pre-commit hooks and GitHub templates - #127
Conversation
Adopt the shared pre-commit baseline: two-line SPDX header, conventional commit message validation (commit-msg stage), and the centralized add-license / add-spdx-license hooks from developer_tools v0.2.0. Run pre-commit CI only on files modified by the PR, and roll out the standard issue templates and the simplified single PR template. TRI-1100
Legal's Copyright / License Header Guidance specifies the SPDX form without a comma after the year. TRI-1100
|
Was the Ruff → black/isort/flake8 swap intentional for TRI-1100? Has pre-commit run --all-files been run to confirm no surprise formatting diffs? |
Review feedback on #127: the swap to isort/black/flake8 was not intentional - this repository's Ruff formatter/linter and pyupgrade setup is deliberate and stays. Only the shared alignment additions apply: commit-msg conventional-commit validation and default_install_hook_types. TRI-1100
|
Good catch — the Ruff → black/isort/flake8 swap was not intentional. This repo's Ruff formatter/linter + pyupgrade setup is a deliberate toolchain choice (with the trt_llm excludes), and the alignment should have preserved it the same way it preserved perf_analyzer's newer revs and client's mypy. Fixed in ab760e4: the config is now main's Ruff/pyupgrade toolchain verbatim, plus only the shared additions (commit-msg conventional-commit validation, On |
Thanks for the fix. Verified ab760e4 keeps Ruff/pyupgrade verbatim and only adds the shared alignment pieces (commit-msg hook, conventional-pr stub, modified-files CI). LGTM. |
The add-license hook now fails when the LICENSE copyright year is stale. TRI-1100
Workflow files are license-processed again (only templates excluded); refresh the stale copyright year this repo's pre-commit workflow carried. TRI-1100
Grant issues:write to the labeling job (review feedback). TRI-1100
Greptile SummaryThis PR aligns the repository with the org-wide CI/tooling baseline defined in
Confidence Score: 5/5Safe to merge — all changes are CI configuration; no application code is touched and the dual-event workflow guard is correctly constructed. The three changed files are CI/tooling config only. The conventional-pr caller correctly isolates same-repo vs fork triggers. The pre-commit workflow scoping logic (diff-filter, no-run-if-empty, null-delimited xargs) is sound. The one finding — an unpinned major-version tag on actions/cache — is a consistency nit that does not affect correctness. .github/workflows/pre-commit.yml — the actions/cache@v4 pin is the only item worth a second look for consistency with the fully-pinned neighbouring actions. Important Files Changed
Sequence DiagramsequenceDiagram
participant Dev as Developer
participant GH as GitHub Actions
participant OrgWF as org .github reusable workflow (v1.4.3)
participant PC as pre-commit
Dev->>GH: Opens / updates PR
GH->>GH: conventional-pr.yml triggers (pull_request or pull_request_target)
GH->>GH: if-condition selects correct event for same-repo vs fork
GH->>OrgWF: "uses: conventional-pr.yml@v1.4.3"
OrgWF->>GH: Validates PR title (Conventional Commits)
OrgWF->>GH: "Derives & applies type label (ci, feat, fix ...)"
GH->>GH: pre-commit.yml triggers (pull_request)
GH->>GH: "git diff --name-only -z --diff-filter=d HEAD^1 HEAD"
GH->>PC: xargs -0 --no-run-if-empty pre-commit run --files changed-files
PC-->>GH: Hook results (ruff, pyupgrade, codespell, pre-commit-hooks)
Dev->>Dev: git commit (local)
Dev->>PC: commit-msg hook fires (conventional-pre-commit v4.4.0)
PC-->>Dev: Pass / fail on commit message format
Reviews (3): Last reviewed commit: "ci: harden CI workflows and configs per ..." | Re-trigger Greptile |
- conventional-pr stub: dual pull_request/pull_request_target triggers so fork PRs from external contributors get labeled too (the reusable workflow never checks out PR code); explicit contents:read; pinned v1.4.3. - pre-commit workflow: robust modified-files runner (null-delimited paths, deletion-only PRs handled, deleted paths filtered, no undocumented -r flag, cache keyed on config hash). - flake8 args quoted correctly (the flow-scalar form split at commas and silently reduced the select list). - hooks pinned to .github v1.4.3. TRI-1100
|
Closing: the team is moving away from centralized org-level configuration in favor of per-repository self-contained setups (see triton-inference-server/server#8897 for the first decentralized implementation). Branch retained for reference. TRI-1100 |
What does the PR do?
Aligns this repository with the org-wide setup consolidated in triton-inference-server/.github:
.pre-commit-config.yaml: shared baseline hooks, conventional-commit message validation (commit-msg stage), and the centralizedadd-licensehook from the org.githubrepository (rev: v1.4.3— excludes.github/templates, never rewrites LICENSE files).conventional-prworkflow (@v1.4.3): validates the PR title against Conventional Commits (hard gate — it becomes the squash-merge commit), derives one human-readable label per distinct type found in the title and all conforming commit subjects (e.g.ci:→CI/CD,feat:→feature,fix:→fix), enforces org-wide label colors/descriptions, detects cherry-picks, and fails if no type is derivable and no type label is assigned.Repo-specific: keeps this repo's deliberate Ruff formatter/linter + pyupgrade toolchain (per review feedback); the centralized
add-licensehook is NOT enabled because this repository has no LICENSE file — follow-up: add a LICENSE, then enable it.Depends on triton-inference-server/.github#5 (pinned tags current:
v1.4.3— already exist, CI is green).Pros / Cons
Pros
.githubrepo) for hooks, templates, issue routing, and the PR-title workflow — one change propagates everywhere.Cons / risks
.githubrepository (tags are write-once; changes ship as a new tag + rev bump)..githubrepository to remain public.Related Issues / PRs
Related PRs:
Test plan
pre-commit validate-configpasses;pre-commit run --files <PR diff>passes locally with the centralized hooks pinned to the .github branch SHA.v1.4.3exists: the conventional-pr check validates this PR's own title and applies thecilabel.Caveats
Checklist
<commit_type>: <Title>(conventional commit)