Labeling which SIG, WG, subproject, etc. is as important as the issue or PR having someone assigned. To quote the docs, “Tide is a Prow component for managing a pool of GitHub PRs that match a given set of criteria. It will automatically retest PRs that meet the criteria (’tide comes in’) and automatically merge them when they have up-to-date passing test results (’tide goes out’).”
Something that really helps move things along is the label_sync tool along with the logic Prow and Tide bring to the community.
What actually prompted this article is the awesomely amazing folks on the Contributor Comms team saying, “I need to squash my commits and push that.” Which immediately made me remember the wonder of the Tide label:
That’s right. Squashing your commits is a label away and the tooling will do the rest. To do this on your PR you’ll need to comment with the following:
These two pages document all the functionality available to Kubernetes contributors (either through labels or Prow). The biggest thing to remember is when a something is a label or a command:
Some of my more often used commands and labels:
/assign(using it without adding a name assigns yourself)
/remove-lifecycle stale(when issues aren’t touched for a period of time they’re marked stale)
/label area/contributor-comms(You can use this to flag down the contributor communications team for reviews, comments on any issue, feedback, etc.)
/label size/X(Sizes are assigned automatically based on the number of lines changed in the PR)
/label do-not-merge/hold(This one is used for many things; if your PR is a work in progress, needs to be held to a certain date, etc.)
/lgtm(Adds or removes the ’lgtm’ label which is typically used to gate merging)
/approve(Approves a pull request; must be done by someone in the repo’s OWNERS file)
What if you need a label that isn’t available on a certain GitHub repository? I’m glad you asked! This PR demonstrates how to add labels to a repo: https://github.com/kubernetes/test-infra/pull/24315. You’ll need to update the labels.yaml file (the configuration) and the labels.md file (documentation).
I’ve done this once in five years of contributing. But, it’s good to write it down as it’s something that isn’t as trivial as you think because of the importance of the label_sync tooling.
These are a handful of the commands and labels I enjoy. I’m sure there are many others that are helpful to folks. With that in mind, see if there’s something you can benefit from in these resources. They are there to make working on Kubernetes a better experience. If you think there’s some functionality missing, I’d invite you to drop a Slack message in SIG-ContribEx or SIG-K8s-Infra to discuss.
HUGE SHOUTOUT: To the folks that keep these systems humming along for the Kubernetes community. Couldn’t do it without y’all.