Infra: Add community workflows, compliance automation, and dependency review - #258
sfc-gh-swalia wants to merge 5 commits into
Conversation
|
@sfc-gh-swalia Thanks for that! I will do the review. I saw some changes that are not required now and also to be clarified for release. |
|
Can you please disclose any AI tool assistance? |
Hey @jbonofre - Yes - I used Claude Opus 4.6 assistance for this PR. Primarily used it for researching ASF compliance patterns across workflow infrastructure, drafting workflow YAML andd validating configurations. I reviewed and validated the code before committing. I propose we make AI tool disclosure a standard part of our contribution process i.e. a simple optional note in the PR template and a brief section in CONTRIBUTING.md. This keeps us transparent and aligned. Happy to include that in |
|
@sfc-gh-swalia do you mind to rebase and resolve conflict? I think part of this PR is already implemented. |
e522cbe to
0561546
Compare
Hey @jbonofre - Done! ready for your review. |
kayemkim
left a comment
There was a problem hiding this comment.
Thanks for turning the rebase around within the hour. A header check that runs on every PR is what the dev@ thread was asking for, so I ran this branch through it locally.
dev/check-license does not run as written. RAT 0.16.1 rejects the first option:
ERROR: Unrecognized option: --input-exclude-file
--input-exclude-file, --input-exclude-std and --output-style arrived in RAT 0.17. Setting RAT_VERSION="0.18" is enough; with that one change every option in the script is accepted. No workflow has run on this PR's head, which is why the checks here did not show it.
With 0.18, on the pre-#416 tree the check flags 27 files: the 22 that #416 covered, plus five my grep there missed because it only looked at source extensions. Those five are still on main, so the check would go red on the first PR after this merges:
converters/sigma/README.mdandconverters/sigma/LIMITATIONS.mdare the only Markdown files in the repo without the<!-- -->header.converters/microsoft/tests/fixtures/sales_model.bimandconverters/microsoft/tests/test.ipynbare JSON, so**/*.bimand**/*.ipynbbelong in.rat-excludesnext to**/*.json.converters/microsoft/tests/fixtures/sales_model.tmdl:tom.pytreats leading///lines as the description of the object below, so excluding the fixture is safer than a header.
On the other workflows:
community-pr-helper.yml:pulls.listhas nocreatorparameter, so the call returns the repo's PRs regardless of author (I checked against the live API),prs.lengthis always the page size, and the welcome never fires.issues.listForRepo({ creator, state: 'all' })filtered onpull_requestwould work. In the message itself, CONTRIBUTING.md now says an ICLA is only required at committer election (#339), and the Slack invite points to a different workspace than README and CONTRIBUTING.pr-title-check.yml: over the last 60 merged PR titles the pattern passes 3. Parentheses are outside the character class, sofix(dbt):,docs(core-spec):and every dependabotchore(deps):title fail. Allowingtype(scope):would avoid rejecting most incoming PRs on day one.labeler.yml:converters/now also hassigma,microsoft,nvidiaandontology; the catch-allconverterlabel still applies, so this is only the per-converter labels.dependency-review.yml: the dependency graph is enabled on the repo, so this will run.
The stale and awaiting-response workflows look fine to me; both only act on a label nothing here applies automatically.
If it helps get the header check in before the release, license-check.yml plus dev/ is independent of the rest and could land on its own. LGTM for that part once the RAT version is bumped and the five files above are handled.
- Bumped RAT version 0.16.1 to 0.17 ( since 0.17 is the minimum with ```--input-exclude-file``` and ```--output-style;```) - Added missing entries to .rat-excludes: *.bim, *.ipynb, sales_model.tmdl - Added ASF license headers to converters/sigma/README.md and LIMITATIONS.md - Fixed CRLF line endings in ```dev/check-license``` (it was breaking on Linux runners) lock in LF via new .gitattributes rule - Fixed community-pr-helper and replaceed pulls.list (no creator param) with search.issuesAndPullRequests; correct ICLA wording per apache#339; fix Slack link to apache-ossie workspace (was pointing to ossaboratories) - Fixed pr-title-check regex to allow type(scope): format; parentheses were missing from the character class, rejecting fix(dbt): chore(deps): etc. - Add converter/sigma, converter/microsoft, converter/nvidia, converter/ontology labels to labeler.yml Tested locally: dev/check-license passes clean (zero flagged files), pr-title regex validated against last 60 merged PR titles.
Hey @kayemkim — thanks for the thorough review. I addressed all the issues you raised: RAT bumped to 0.17, the five missing files added to While testing dev/check-license locally I also caught that the script had CRLF line endings, which would have broken it on any Linux runner. Fixed and locked in via .gitattributes. I couldn't test dependency-review and stale locally as those depend on GitHub's dependency graph infrastructure and real aged issues. I am hoping CI will validate those once this merges. Let me know what you think. |
|
Re-ran on 0ad3a37 merged into current main (94a688c). Two small notes, neither needs a change. The committed |
|
Thanks! Let me do a review. |
- stale.yml: disabled auto-close for issues and PRs (days-before-*-close: -1) - auto-label-issues.yml: bootstrap needs-triage label before applying - auto-label-prs.yml: added issues:write, bootstrap labels from labeler.yml - dependency-review.yml: added missing ASF Category X SPDX identifiers - dependency-review.yml: documented fork PR comment limitation
jbonofre
left a comment
There was a problem hiding this comment.
We are pretty close! Thanks for the updated!
I have a couple of points to address before merging, then we should be good. Thanks again!
- remove-awaiting-response.yml: addLabels call with .catch for fork PRs
Summary
Adding community management workflows and compliance automation to bring GitHub infra in line with other ASF projects (modeled on Apache Iceberg's approach).
Compliance:
Community management:
needs-triagesync-labels(wildcard catch-all forconverters/**+ specific per-converter labels)awaiting-responseflips toneeds-reviewwhen author respondsawaiting-response, exempts anything assigned or milestoned)Governance:
Area: Description) for clean squash-merge historyAll workflows include the ASF license header and are guarded with
if: github.repository_owner == 'apache'so they do not fire on contributor forks.Note: The labels referenced by these workflows (
needs-triage,awaiting-response,needs-review,stale,converter/*, etc.) do not exist yet — GitHub creates them automatically on first use.Checklist
Compliance