Issue and PR Labels and Templates, Bots
Overview
The Layer5 GitHub Process emphasizes consistent pull requests and issue labels to streamline continuous integration and reduce overhead across the growing repository collection.
The number of repositories under the “Layer5io” organization is growing. In order to ensure consistency across the repositories and to decrease the time it takes for a continuous integration (GitHub Actions) to execute, consistent use of pull request and issue labels will aid in the reduction of overhead.
Issue and Pull Request Templates
Layer5 uses issue and pull request templates. See the `.github` folder in any repo for examples.
Template Repositories
Layer5 uses the following repository templates:
- layer5-repo-template
- meshery-adapter-template
Branch Protection
Layer5 protects the master branch by requiring reviews from at least one approver.
Organization Secrets
Layer5 has the following org-wide secrets available:
Secret Name | Description |
---|---|
CYPRESS_RECORD_KEY | Needed for recording the Cypress run in the Cypress Dashboard |
DOCKER_PASSWORD | Belongs to user “mesheryci” |
DOCKER_USERNAME | “mesheryci” |
NETLIFY_AUTH_TOKEN | |
NETLIFY_SITE_ID | |
RELEASEDRAFTER_PAT | Belongs to user “l5io” |
RELEASE_NOTES_PAT | Belongs to user “l5io” |
SLACK_BOT_TOKEN | |
GITHUB_TOKEN | For the community scope repo that can be use commit and release |
NODE_VERSION | “v18” as of Nov 15, 2022. |
GO_VERSION | 1.19 |
PROVIDER_TOKEN | Infinite Meshery Cloud token |
NPM_TOKEN | l5io user’s token for publishing packages |
INTEGRATION_SPREADSHEET_CRED | Base64 encoded cred for accessing integration spreadsheet on behalf of user no-reply@layer5.io |
PLAYGROUND_CONFIG | Base64 encoded kubeconfig of Playground |
METAL_SSH_KEY | SMP Project-wide SSH private key |
METAL_AUTH_TOKEN | Metal cli auth token |
METAL_SERVER1 | ID of 1st metal server running playground |
METAL_SERVER2 | ID of 2nd metal server running playground |
Labels for Issues
The following list of GitHub issue labels are applied organization-wide. New repositories created as of June 13th, 2020 will contain these labels by default.
labels | Description | Color |
---|---|---|
area/ci | Continuous integration | Build and release | #5319e1 |
area/docs | Improvements or additions to documentation | #5319e2 |
area/lifecycle | Lifecycle management (install, uninstall, configure) related | #5319e3 |
area/performance | Performance management | #5319e4 |
area/tests | Testing / quality assurance | #5319e5 |
area/ui | User Interface | #5319e6 |
area/workloads | Applications / services | #5319e7 |
area/helm | Helm charts issues | #5319e8 |
component/api | API related | #3a0485 |
component/mesheryctl | Meshery CLI related | #3a0486 |
component/ui | #3a0486 | |
component/filters | ||
component/patterns | #3a0486 | |
component/meshsync | MeshSync related | #3a0487 |
component/meshery-perf | Meshery-perf related | #3a0488 |
good first issue | Good for newcomers | #7057ff |
help wanted | Extra attention is needed | #35f48e |
issue/invite | When applied, this label triggers a to send an invitation to the issue author to join the respective GH org. Invitations are missing appropriate team assignments, however. | #eeeeee |
issue/blocked | Issue is blocked | #eeeeee |
issue/design required | A labeler bot comments with a note stipulating the a design specification required prior to proceeding. | #eeeeee |
issue/duplicate | This issue or pull request already exists | #eeeeee |
issue/invalid | This doesn't seem right | #eeeeee |
issue/stale | Issue has not had any activity for an extended period of time. Label is most often applied by a stale bot, working under specific inactivity timeouts. | #eeeeee |
issue/tweet | Posts | #eeeeee |
issue/remind | A labeler bot comments on the issue with a helpful reminder to the current assignee that help is available, if needed, and a reminder that their issue remains outstanding (undone). | #eeeeee |
issue/willfix | This issue will be worked on. The stale bot honors this label and skips staleness consideration of issues with this label. | #eeeeee |
kind/bug | Something isn't working | #088073 |
kind/child | One of a number of issues relating to an epic | #088074 |
kind/chore | Necessary task | #088075 |
kind/enhancement | Improvement in current feature | #088076 |
kind/epic | An issue that describes a set of concerns (issues) | #088077 |
kind/feature | New major feature or request | #088078 |
kind/proposal | Proposal request for project | #088079 |
kind/question | Further information is requested | #088080 |
language/go | Golang related | #16e2e2 |
language/javascript | Javascript related | #16e2e3 |
language/ruby | Ruby related | #16e2e4 |
pr/dependencies | Dependabot or manual dependencies addressed in this PR | #0366d5 |
pr/do-not-merge | PRs not ready to be merged | #0366d6 |
pr/draft | WIP/Draft pull request | #0366d7 |
pr/on hold | PR/Issue on hold | #0366d8 |
priority/urgent | Issue to be addressed urgently | #f60205 |
priority/high | High priority issue | #d60205 |
priority/low | Low priority issue | #a60205 |
service-mesh/app-mesh | Issues related to App Mesh | #57b6cc |
service-mesh/consul | Issues related to Consul | #57b6cc |
service-mesh/cpx | Issues related to CPX | #57b6cc |
service-mesh/istio | Issues related to Istio | #57b6cc |
service-mesh/kuma | Issues related to Kuma | #57b6cc |
service-mesh/linkerd | Issues related to Linkerd | #57b6cc |
service-mesh/maesh | Issues related to Maesh | #57b6cc |
service-mesh/nginx | ssues related to NGINX SM | #57b6cc |
service-mesh/nsm | Issues related to NSM | #57b6cc |
service-mesh/tanzu | Issues related to Tanzu | #57b6cc |
List for Pull Requests
The following list of pull request labels will be used to both indicate purpose or status of the PR to maintainers, and significantly, they will be used in conditional logic during workflow execution to determine the PR’s appropriate path through the CI flow.
- Refactor - Chore related pull request
- Fix - Bug fixes PRs
- On-hold - PR needs review before merging or it needs to behold until a specific issue is fixed.
- Dependabot - All dependabot related automated PRs
- release - identifies that a release is / will be made
- Draft - PR is in draft state, GitHub provides a way for the draft state but having a label will help us in triage purposes.
- Approved - Indicates a PR has been approved by approver form all required OWNERS files. #51ed31
- help wanted - Extra attention is needed #008672
- needs-ok-to-test - #d60c6a
- awaiting review - The PR is ready for the reviewer to review. #fbca04
Improving the build times through conditional logic that will skip sections of the ci.yml, unless these labels are present:
- docs - build the Jekyll site for Meshery documentation
- component/mesheryctl - build the Meshery CLI
- area/ui - build the Meshery UI
- component/meshery-server - Assumed that Meshery Server should always be build, but this is not the case.
Bots
Layer5 uses the following bots:
- Triage bot
- Stale bot
- Welcome bot
- DCO bot
Actions
- Labeler.yml
- label-commenter.yml
Good resource - https://github.com/sdras/awesome-actions#pull-requests