Repo to push a standard set of labels to the other repos we use so that we have consistent labeling.
Mozilla Public License Version 2.0 see FAQ for more detail.
If you find a bug then please raise an issue.
We'd also love to get pull requests for improvements.
Please see CONTRIBUTING.md for details.
Our code of conduct is based on
There's a GitHub Action Sync
configured in this repo that runs unify.py
to apply the labels from github-labels.yaml
to the repos listed in atsign-foundation.yaml
.
The action runs every time a change is pushed to this repo (such as an additon to the labels file).
There's also a Newlabel
Action that adds runs when new labels are added to this repo, running dump_github_labels.py
to create a new github-labels.yaml
and then unify.py
to sync like above.
The Action uses a Secret called REPO_TOKEN
which is a
Personal access token scoped for repo
from an account with access to the target organisation repos.
Used to remove existing labels from a repo:
./clear_github_labels.py user/org_name repo_name
Dump the labels in an existing repo to a file:
./dump_github_labels.py github-labels.yaml user/org_name repo_name
List the repos in an org to a file:
./list_org_repos.py myorg-repos.yaml org_name
Push a set of labels from a file to a repo:
./push_github_labels.py github-labels.yaml user/org_name repo_name
Push a set of labels from a file to a list of repos within an org:
./unify_labels.py github-labels.yaml myorg-repos.yaml org_name
Repos in the atsign-foundation org
Labels used across atsign orgs
Test set with additional label
Smaller set of repos in atsign-foundation for testing
Thanks to the DXC Online DevOps Dojo team for the github-labels.py script that's used in the Welcome module.
When multiple labels are added in quick succession the automation runs may fail when
they get to git push
because another automation run has changed the repo since it
was pulled:
To https://github.com/atsign-company/labels
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://github.com/atsign-company/labels'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Error: Process completed with exit code 1.
The code has been refactored to minimise the window for this happening, but it's still possible.
Where there are subsequent successful runs there's no need to do anything. If the most recent run fails in this way then simply rerun it.
The dump utility will only dump the first page of labels at its max size of 100.
GitHub don't (yet) seem to have a public API to update the label defaults in an org, but once they do it will be useful to sync those too.
Add page checking to dump utility for >100 labels.