/size-label-action

GitHub action to assign labels based on pull request change sizes

Primary LanguageJavaScriptMIT LicenseMIT

size-label-action

GitHub action to assign labels based on number of added Ukrainian characters.

Usage

Create a .github/workflows/size-label.yml file:

name: size-label
on: pull_request_target
jobs:
  size-label:
    permissions:
      contents: read
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - name: size-label
        uses: "webdoky/size-label-action@main"
        env:
          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

Create the needed labels

Export both GITHUB_TOKEN and REPO (e.g. my-username/my-repository) and run the script below:

for size in XL XXL XXS XS S M L; do
  curl -sf -H "Authorization: Bearer $GITHUB_TOKEN" "https://api.github.com/repos/kubernetes/kubernetes/labels/size/$size" |
    jq '. | { "name": .name, "color": .color, "description": .description }' |
    curl -sfXPOST -d @- -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/$REPO/labels
done

Configuration

The following environment variables are supported:

  • IGNORED: A list of glob expressions separated by newlines. Files matching these expressions will not count when calculating the change size of the pull request. Lines starting with # are ignored and files matching lines starting with ! are always included.

You can configure the environment variables in the workflow file like this:

env:
  GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
  IGNORED: ".*\n!.gitignore\nyarn.lock\ngenerated/**"

Custom sizes

The default sizes are:

{
  1: "XXS",
  10: "XS",
  100: "S",
  1000: "M",
  5000: "L",
  10000: "XL",
  20000: "XXL"
}

Pull requests with less than 1 character changed will not get a label – they are not considered translations.

You can pass your own configuration by passing sizes

name: size-label
on: pull_request_target
jobs:
  size-label:
    permissions:
      contents: read
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - name: size-label
        uses: "pascalgn/size-label-action@v0.4.2"
        env:
          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
        with:
          sizes: >
            {
              "0": "XS",
              "20": "S",
              "50": "M",
              "200": "L",
              "800": "XL",
              "2000": "XXL"
            }

License

MIT