Skip to content

Files

Latest commit

Kubernetes Prow Robotci-robot
Kubernetes Prow Robot
and
ci-robot
Jan 24, 2022
47ff803 · Jan 24, 2022

History

History
This branch is 17292 commits behind kubernetes/test-infra:master.

label_sync

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Jan 24, 2022
Oct 14, 2021
Apr 2, 2018
Mar 26, 2020
Aug 10, 2021
Sep 12, 2018
Dec 1, 2021
Jun 12, 2020
Dec 1, 2021
Feb 3, 2021
Jan 24, 2022
Feb 3, 2021
Aug 2, 2018

label_sync

Update or migrate github labels on repos in a github org based on a YAML file

Configuration

A typical labels.yaml file looks like:

---
labels:
  - color: 00ff00
    name: lgtm
  - color: ff0000
    name: priority/P0
    previously:
    - color: 0000ff
      name: P0
  - name: dead-label
    color: cccccc
    deleteAfter: 2017-01-01T13:00:00Z

This will ensure that:

  • there is a green lgtm label
  • there is a red priority/P0 label, and previous labels should be migrated to it:
    • if a P0 label exists:
      • if priority/P0 does not, modify the existing P0 label
      • if priority/P0 exists, P0 labels will be deleted, priority/P0 labels will be added
  • if there is a dead-label label, it will be deleted after 2017-01-01T13:00:00Z

Usage

# test
bazel test //label_sync/...

# add or migrate labels on all repos in the kubernetes org
bazel run //label_sync -- \
  --config $(pwd)/label_sync/labels.yaml \
  --token /path/to/github_oauth_token \
  --orgs kubernetes
  # actually you need to pass the --confirm flag too, it will
  # run in dry-run mode by default so you avoid doing something
  # too hastily, hence why this copy-pasta isn't including it

# add or migrate labels on all repos except helm in the kubernetes org
bazel run //label_sync -- \
  --config $(pwd)/label_sync/labels.yaml \
  --token /path/to/github_oauth_token \
  --orgs kubernetes \
  --skip kubernetes/helm
  # see above

# add or migrate labels on the community and steering repos in the kubernetes org
bazel run //label_sync -- \
  --config $(pwd)/label_sync/labels.yaml \
  --token /path/to/github_oauth_token \
  --only kubernetes/community,kubernetes/steering
  # see above

# generate docs and a css file contains labels styling based on labels.yaml
bazel run //label_sync -- \
  --action docs \
  --config $(pwd)/label_sync/labels.yaml \
  --docs-template $(pwd)/label_sync/labels.md.tmpl \
  --docs-output $(pwd)/label_sync/labels.md

Our Deployment

We run this as a CronJob on a kubernetes cluster managed by test-infra oncall, and can also schedule it as a Job for one-shot usage.

These pods read labels.yaml from a ConfigMap that is updated by the prow updateconfig plugin.

To update the labels.yaml file, make the desired changes to labels.yaml and run the ./hack/update-labels.sh script. Then open a pull request with the resulting labels.yaml and labels.md files.