Skip to content

tiangolo/label-approved

Use this GitHub Action with your project

Add this Action to an existing workflow or create a new one.

View on Marketplace
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

Label Approved

Label PRs that have been approved a number of times.

Inspired from label-when-approved-action but with support for PRs from forks.

How to use

Install this GitHub action by creating a file in your repo at .github/workflows/label-approved.yml.

A minimal example could be:

name: Label Approved

on:
  schedule:
    - cron: "0 0 * * *"

jobs:
  label-approved:
    runs-on: ubuntu-latest
    steps:
    - uses: docker://tiangolo/label-approved:0.0.2
    # You can also use the action directly, but that will take about an extra minute:
    # - uses: tiangolo/label-approved@0.0.2
      with:
        token: ${{ secrets.GITHUB_TOKEN }}

This example uses the defaults configurations.

It will run every night and check all the open PRs, for each PR with the label awaiting review, it will check the approvals.

If there are 2 or more approvals, it will remove the label awaiting review and will add the label approved-2.

Configuration

You can add different labels to apply.

And for each label, you can specify:

  • number: the minimum number of approvals.
  • await_label: a label to filter the PRs. In the example above it is awaiting review (the default when no configs are provided).
    • If await_label is omitted or null, it will apply to all open PRs.

These configs are passed as a JSON object, but as GitHub actions can only take strings as parameters, the JSON object has to be converted to a string.

Check the next example...

Configuration Example

Here's an example with 3 labels to apply, each with its own config.

It's all inside of a single JSON config, passed as a multiline string.

In YAML (this format) you can use > to declare that a string has multiple lines.

name: Label Approved

on:
  schedule:
    - cron: "0 0 * * *"

jobs:
  label-approved:
    runs-on: ubuntu-latest
    steps:
    - uses: docker://tiangolo/label-approved:0.0.2
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
        config: >
          {
            "approved-1":
              {
                "number": 1,
                "await_label": "awaiting review"
              },
            "omg 2 approved":
              {
                "number": 2,
                "await_label": "only 2"
              },
            "approvals in 3D":
              {
                "number": 3
              }
          }

Note: Have in mind that after the > the multiline has to have at least one more level of indentation than the key config above.

Here's what this config will do:

Check each open PR, and:

  • Apply the label approved-1 to open PRs with:
    • 1 approval (or more).
    • The label awaiting review (removing it afterwards).
  • Apply the label omg 2 approved to open PRs with:
    • 2 approvals (or more).
    • The label only 2 (removing it afterwards).
  • Apply the label approvals in 3D to open PRs with:
    • 3 approvals (or more).
    • await_label was not declared, so, any open PR will match.

Release Notes

Latest Changes

Internal

0.0.2

  • πŸ› Fix approved user count logic. PR #6 by @tiangolo.
  • πŸ› Fix Python app name to be called in Docker. PR #5 by @tiangolo.
  • ⬆️ Upgrade GitHub Action Latest Changes. PR #4 by @tiangolo.
  • πŸ› Fix logic to compute the number of approvals, count only last approval per user. PR #3 by @tiangolo.

0.0.1

First release πŸŽ‰

License

This project is licensed under the terms of the MIT license.

About

Label a Pull Request after a number of approvals

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published