Skip to content

ci: add Prow-style triage and review slash commands - #609

Open
Caesarsage wants to merge 2 commits into
microcks:masterfrom
Caesarsage:ci/triage-commands
Open

Caesarsage wants to merge 2 commits into
microcks:masterfrom
Caesarsage:ci/triage-commands

Conversation

@Caesarsage

@Caesarsage Caesarsage commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Refs #603

Adds Kubernetes-style slash commands for issues and PRs, run by GitHub Actions (no Prow). New issues get needs-triage. Issues aren't assigned: once an issue has triage/accepted, the first complete PR is accepted. Commands are listed in documentation/triage-commands.md.

/triage accepted
/priority backlog
/kind bug
/area docs

Why: PRs were opened before the issue was agreed on (#597), and contributors opened duplicate PRs (#605, #607).

Permissions

  • Maintainers can use every command.
  • Contributors can triage and use /lgtm, but not on their own items.
  • /assign and /unassign are maintainer-only.
  • /approve, /priority, /milestone and the /remove-* commands are maintainer-only.
  • Nobody can /lgtm or /approve their own PR.

Review commands only set labels, so merging still needs a code owner review.

Security: the bot checks out only hack/triage from the default branch and never runs PR code. Commands hidden in HTML comments are ignored.

Beyond #603: this PR also adds the PR review commands, /priority, /milestone and a hold check. Happy to split these into a separate PR.

After merge: I'll create the new triage/*, priority/*, lgtm, approved and do-not-merge/hold labels.

AI disclosure: I wrote this with Claude Code and reviewed and tested all of it. Testing on my fork: Caesarsage#2 and Caesarsage#3.

Adds a triage bot, run by GitHub Actions, that applies Kubernetes-style
slash commands from issue and pull request comments.

New issues get needs-triage. Contributors and maintainers triage with
/triage, /kind, /area, /platform, /good-first-issue and /help, and
contributors pick up accepted issues with /assign. Maintainers also have
/priority, /milestone, /keep-open, /close duplicate|wontfix|invalid and
the /remove-* commands. On pull requests, /lgtm, /approve, /hold,
/unhold, /retest, /cc and /uncc are available; review commands only set
labels, so merging still needs a code owner review. A hold check fails
while do-not-merge/hold is set.

The bot lives in hack/triage (parse.js, plan.js, run.js) with all
permission rules in the pure plan() function, and is tested with node
--test in the new triage-tests workflow. It only checks out hack/triage
from the default branch and never runs pull request code.

The welcome messages now point first-time contributors to the triage
flow. Commands are documented in documentation/triage-commands.md.

Refs microcks#603

Signed-off-by: caesarsage <destinyerhabor6@gmail.com>
@Caesarsage

Copy link
Copy Markdown
Collaborator Author

@Harsh4902 @Vaishnav88sk @yada could you take a look at this

Comment thread .github/workflows/welcome-new-users.yml Outdated
Thanks and congrats 🎉 for opening your first issue here! Be sure to follow the issue template or please update it accordingly.


🏷️ A maintainer will triage it soon. If you'd like to work on it, please wait for the `triage/accepted` label, then comment `/assign`. See the [triage commands](https://github.com/microcks/microcks-cli/blob/master/documentation/triage-commands.md).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Caesarsage we should remove this "/assign" part. As in Microcks we don't follow this practice.

Comment thread documentation/triage-commands.md Outdated
Comment on lines +17 to +18
| `/assign` | Assigns yourself. On issues, only once the issue has `triage/accepted`. |
| `/unassign` | Unassigns yourself. |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These aslo can be skipped.

@Harsh4902

Copy link
Copy Markdown
Member

@Caesarsage There are some minor changes which we've to make. Rest looks good to me.

@Caesarsage

Copy link
Copy Markdown
Collaborator Author

What's the process of assigning oneself to an issue @Harsh4902

@Caesarsage

Copy link
Copy Markdown
Collaborator Author

Maintainer doing the assignment might become too much work as issue progresses and not assigned work come back to anyone raising duplicate PRs (though the assignment doesn't entirely prevent this but a contributor know who is working on the issue and who to collaborate with if needed )

@Harsh4902

Copy link
Copy Markdown
Member

What's the process of assigning oneself to an issue @Harsh4902

We usually don't assign issues to a specific person. We mostly follow "first come, first serve" appraoch and whoever first raise the PR with complete solution, we accept it.

@Vaishnav88sk

Copy link
Copy Markdown
Contributor

We mostly follow "first come, first serve" appraoch and whoever first raise the PR with complete solution, we accept it.

+1 for this point. When I first contributed to the microcks, lau told the same thing to me. 😄

@Caesarsage

Copy link
Copy Markdown
Collaborator Author

What's the process of assigning oneself to an issue @Harsh4902

We usually don't assign issues to a specific person. We mostly follow "first come, first serve" appraoch and whoever first raise the PR with complete solution, we accept it.

Okay, I think people can still assign themselves if they want and it doesn't prevent the first come, first serve PR approach.

@Vaishnav88sk Vaishnav88sk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is my only concern. other than this It looks very good to me. And yes we can test this system on cli before applying on others.

Comment thread documentation/triage-commands.md Outdated
| `/remove-lgtm` (`/lgtm cancel`), `/remove-approve` (`/approve cancel`) | Maintainers | Removes `lgtm` or `approved`. |
| `/hold` | Contributors, maintainers and the author | Adds `do-not-merge/hold`. The `hold` check fails while the label is set. |
| `/unhold` (`/hold cancel`) | Maintainers | Removes `do-not-merge/hold`. |
| `/retest` | Maintainers and the author | Re-runs the failed checks on the latest commit. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think in prow, this /retest is due to it runs the the k8s ecosystem code in the environment and req that infra. And infra can fail, so it is there. But here we dont have such situation, so I am confused about the use of this?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's using the same prow idea but entirely different implementation.

The retest here simply rerun the existing test/checks when someone open a PR today.

Microcks doesn't assign issues to contributors: the first complete pull
request is accepted. Contributors now get a short explanation instead of
being assigned, and the welcome message no longer mentions /assign.

Document why /retest exists: re-running checks from the Actions tab
needs write access.

Signed-off-by: caesarsage <destinyerhabor6@gmail.com>
@Caesarsage

Copy link
Copy Markdown
Collaborator Author

@Harsh4902 I have updated the PR

This branch was successfully deployed

1 active deployment
Build — ece52f4b Deployed Nov 4, 2026 by Caesarsage via build-verify-package #865
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants