GitHub Process

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 NameDescription
CYPRESS_RECORD_KEYNeeded for recording the Cypress run in the Cypress Dashboard
DOCKER_PASSWORDBelongs to user “mesheryci”
DOCKER_USERNAME“mesheryci”
NETLIFY_AUTH_TOKEN
NETLIFY_SITE_ID
RELEASEDRAFTER_PATBelongs to user “l5io”
RELEASE_NOTES_PATBelongs to user “l5io”
SLACK_BOT_TOKEN
GITHUB_TOKENFor the community scope repo that can be use commit and release
NODE_VERSION“v18” as of Nov 15, 2022.
GO_VERSION1.19
PROVIDER_TOKENInfinite Meshery Cloud token
NPM_TOKENl5io user’s token for publishing packages
INTEGRATION_SPREADSHEET_CREDBase64 encoded cred for accessing integration spreadsheet on behalf of user no-reply@layer5.io
PLAYGROUND_CONFIGBase64 encoded kubeconfig of Playground
METAL_SSH_KEYSMP Project-wide SSH private key
METAL_AUTH_TOKENMetal cli auth token
METAL_SERVER1ID of 1st metal server running playground
METAL_SERVER2ID 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.

labelsDescriptionColor
area/ciContinuous integration | Build and release#5319e1
area/docsImprovements or additions to documentation#5319e2
area/lifecycleLifecycle management (install, uninstall, configure) related#5319e3
area/performancePerformance management#5319e4
area/testsTesting / quality assurance#5319e5
area/uiUser Interface#5319e6
area/workloadsApplications / services#5319e7
area/helmHelm charts issues#5319e8
component/apiAPI related#3a0485
component/mesheryctlMeshery CLI related#3a0486
component/ui#3a0486
component/filters
component/patterns#3a0486
component/meshsyncMeshSync related#3a0487
component/meshery-perfMeshery-perf related#3a0488
good first issueGood for newcomers#7057ff
help wantedExtra attention is needed#35f48e
issue/inviteWhen 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/blockedIssue is blocked#eeeeee
issue/design requiredA labeler bot comments with a note stipulating the a design specification required prior to proceeding.#eeeeee
issue/duplicateThis issue or pull request already exists#eeeeee
issue/invalidThis doesn't seem right#eeeeee
issue/staleIssue 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/tweetPosts#eeeeee
issue/remindA 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/willfixThis issue will be worked on. The stale bot honors this label and skips staleness consideration of issues with this label.#eeeeee
kind/bugSomething isn't working#088073
kind/childOne of a number of issues relating to an epic#088074
kind/choreNecessary task#088075
kind/enhancementImprovement in current feature#088076
kind/epicAn issue that describes a set of concerns (issues)#088077
kind/featureNew major feature or request#088078
kind/proposalProposal request for project#088079
kind/questionFurther information is requested#088080
language/goGolang related#16e2e2
language/javascriptJavascript related#16e2e3
language/rubyRuby related#16e2e4
pr/dependenciesDependabot or manual dependencies addressed in this PR#0366d5
pr/do-not-mergePRs not ready to be merged#0366d6
pr/draftWIP/Draft pull request#0366d7
pr/on holdPR/Issue on hold#0366d8
priority/urgentIssue to be addressed urgently#f60205
priority/highHigh priority issue#d60205
priority/lowLow priority issue#a60205
service-mesh/app-meshIssues related to App Mesh#57b6cc
service-mesh/consulIssues related to Consul#57b6cc
service-mesh/cpxIssues related to CPX#57b6cc
service-mesh/istioIssues related to Istio#57b6cc
service-mesh/kumaIssues related to Kuma#57b6cc
service-mesh/linkerdIssues related to Linkerd#57b6cc
service-mesh/maeshIssues related to Maesh#57b6cc
service-mesh/nginxssues related to NGINX SM#57b6cc
service-mesh/nsmIssues related to NSM#57b6cc
service-mesh/tanzuIssues 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

Layer5, the cloud native management company

An empowerer of engineers, Layer5 helps you extract more value from your infrastructure. Creator and maintainer of cloud native standards. Maker of Meshery, the cloud native manager.