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_TOKENNetlify authentication token used for deployment.
NETLIFY_SITE_IDUnique ID of the Netlify site to deploy to.
RELEASEDRAFTER_PATBelongs to user "l5io"
RELEASE_NOTES_PATBelongs to user "l5io"
SLACK_BOT_TOKENAuthentication token for the Slack bot integration.
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

Layer5 Issue Labels Guide

Well-chosen issue labels keep our repositories organized, make contributing easier, and help everyone—from maintainers to first-time contributors—find relevant tasks quickly. Below, we explain each major label category and when to use them.

Area Labels

Area labels specify which part of the project an issue or PR relates to—such as documentation, user interface, or continuous integration. Using area labels helps contributors with specific interests or expertise find and filter issues that are relevant to them, and helps project maintainers prioritize or assign tasks more efficiently. Assign an area label any time you create or triage an issue/PR that falls within a specific domain (docs, UI, CI, performance, etc.).

LabelDescriptionColor
area/ciContinuous integration, build & release#5319e1
area/docsImprovements/additions to documentation#5319e2
area/lifecycleLifecycle management (install, uninstall, configure)#5319e3
area/performancePerformance management#5319e4
area/testsTesting / quality assurance#5319e5
area/uiUser interface#5319e6
area/workloadsApplications / services#5319e7
area/helmHelm charts issues#5319e8

Component Labels

Component labels indicate which software module or subsystem is affected by an issue. This ensures issues are routed to the right maintainers and allows more detailed filtering beyond the broader area labels. Attach a component label when your issue/PR impacts a specific module (e.g., a CLI tool, API, or pattern engine).

Programming Language Labels

Programming language labels highlight the primary language used in the issue or PR. This helps contributors looking for language-specific work, and aids in code review or help requests. Use a programming language label if the change, bug, or feature is specific to a particular language (e.g., a Go backend bug, a JavaScript UI enhancement).

PR (Pull Request) Labels

PR labels manage the state or special requirements of a pull request, like indicating it's a draft, dependent on others, or not yet ready for merging. Apply a PR label if your pull request isn't ready, should not be merged, updates dependencies, or is on hold.

Issue Process & Status Labels

These labels show the current status of an issue—such as blocked, duplicate, in need of a design, or if an action (like an invitation) should be triggered. Some are used by bots to automate reminders or mark stale issues. Apply these when the situation applies (e.g. "blocked" if work can't proceed, "design required" if more planning is needed).

Kind Labels

Kind labels classify the general type of change or discussion: bug, feature, chore, enhancement, epic, question, or proposal. This improves searchability and helps teams organize their workflows. Use the kind label that best describes your issue or PR.

Priority Labels

Priority labels help teams triage and allocate attention, making it clear which issues are urgent and which can wait. Always apply a priority label, adjusting as priorities shift or as issues are escalated or downgraded.

Service Mesh Labels

Service mesh labels point out which mesh technology or ecosystem the issue pertains to. This is vital for projects supporting multiple meshes, enabling modular attention and expertise. Use these when your change or report is specific to one mesh (like Istio or Linkerd).

Help & Onboarding Labels

Help labels signal issues where some support is needed, or which are especially suitable for newcomers. These labels foster open source engagement and make onboarding easier for new contributors. Apply these to issues where you'd appreciate community help (help wanted) or for issues that are clearly documented, small in scope, and ideal for first-timers (good first issue).

Best Practices & Example

  • Apply all relevant labels: an issue may belong to an area, a component, a kind, have a priority, AND be language-specific.
  • Update labels as issues evolve: don't hesitate to add or remove as information changes.
  • When in doubt, ask!: The Layer5 community Slack is a welcoming place.

Example:
If you find a documentation error regarding Meshery's CLI, that's an easy fix, you might use these labels:
area/docs, component/mesheryctl, kind/bug, priority/low, good first issue

Questions or Suggestions?

Labels missing? Unclear usage? Open a discussion or tag a maintainer in your issue, or bring it up in community Slack.

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