Alexander Kachkaev 60f44e7cf1 Fix unrelated test
2023-05-31 01:45:27 +01:00
2023-05-31 01:45:27 +01:00
2023-03-09 14:03:36 +01:00
2023-03-23 12:16:28 +01:00
2023-05-31 01:44:56 +01:00
2023-05-23 08:39:00 +00:00
2020-05-12 16:00:08 -04:00
2023-03-12 22:13:26 +00:00
2021-06-03 12:43:19 -04:00
2022-12-26 09:47:41 +01:00
2021-06-03 12:43:19 -04:00
2019-08-08 13:07:40 -04:00
2023-03-12 22:13:26 +00:00

Pull Request Labeler

Basic validation

Automatically label new pull requests based on the paths of files being changed.

Usage

Create .github/labeler.yml

Create a .github/labeler.yml file with a list of labels and minimatch globs to match to apply the label.

The key is the name of the label in your repository that you want to add (eg: "merge conflict", "needs-updating") and the value is the path (glob) of the changed files (eg: src/**, tests/*.spec.js) or a match object.

Match Object

For more control over matching, you can provide a match object instead of a simple path glob. The match object is defined as:

- any: ['list', 'of', 'globs']
  all: ['list', 'of', 'globs']

One or both fields can be provided for fine-grained matching. Unlike the top-level list, the list of path globs provided to any and all must ALL match against a path for the label to be applied.

The fields are defined as follows:

  • any: match ALL globs against ANY changed path
  • all: match ALL globs against ALL changed paths

A simple path glob is the equivalent to any: ['glob']. More specifically, the following two configurations are equivalent:

label1:
- example1/*

and

label1:
- any: ['example1/*']

From a boolean logic perspective, top-level match objects are OR-ed together and individual match rules within an object are AND-ed. Combined with ! negation, you can write complex matching rules.

⚠️ This action uses micromatch to apply glob patterns. For historical reasons, paths starting with dot (e.g. .github) are not matched by default. You need to set dot: true to change this behavior. See Inputs table below for details.

Basic Examples

# Add 'label1' to any changes within 'example' folder or any subfolders
label1:
- example/**

# Add 'label2' to any file changes within 'example2' folder
label2: example2/*

# Add label3 to any change to .txt files within the entire repository. Quotation marks are required for the leading asterisk
label3:
- '**/*.txt'

Common Examples

# Add 'repo' label to any root file changes
repo:
- '*'

# Add '@domain/core' label to any change within the 'core' package
'@domain/core':
- package/core/**

# Add 'test' label to any change to *.spec.js files within the source dir
test:
- src/**/*.spec.js

# Add 'source' label to any change to src files within the source dir EXCEPT for the docs sub-folder
source:
- any: ['src/**', '!src/docs/*']

# Add 'frontend` label to any change to *.js files as long as the `main.js` hasn't changed
frontend:
- any: ['src/**/*.js']
  all: ['!src/main.js']

Create Workflow

Create a workflow (eg: .github/workflows/labeler.yml see Creating a Workflow file) to utilize the labeler action with content:

name: "Pull Request Labeler"
on:
- pull_request_target

jobs:
  triage:
    permissions:
      contents: read
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
    - uses: actions/labeler@v4

Inputs

Various inputs are defined in action.yml to let you configure the labeler:

Name Description Default
repo-token Token to use to authorize label changes. Typically the GITHUB_TOKEN secret, with contents:read and pull-requests:write access github.token
configuration-path The path to the label configuration file .github/labeler.yml
sync-labels Whether or not to remove labels when matching files are reverted or no longer changed by the PR false
dot Whether or not to auto-include paths starting with dot (e.g. .github) false

When dot is disabled and you want to include all files in a folder:

label1:
- path/to/folder/**/*
- path/to/folder/**/.*

If dot is enabled:

label1:
- path/to/folder/**

Contributions

Contributions are welcome! See the Contributor's Guide.

Description
An action for automatically labelling pull requests
Readme MIT 35 MiB
Languages
TypeScript 99.7%
JavaScript 0.3%