Skip to content

cbrgm/pr-size-labeler-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

PR Size Labeler GitHub Action

Automatically labels pull requests in your GitHub repository based on the size of changes.

GitHub release Go Report Card go-lint-test go-binaries container

Container Usage

This action can be executed independently from workflows within a container. To do so, use the following command:

podman run --rm -it ghcr.io/cbrgm/pr-size-labeler-action:v1 --help

Workflow Usage

Before using this action, ensure you have a .github/pull-request-size.yml configuration file in your repository. This file should define the size thresholds and corresponding labels.

Add the following step to your GitHub Actions Workflow:

name: PR Size Labeler

on:
  pull_request: # Trigger the workflow when a pull request is opened or synchronized

jobs:
  auto-label-pr:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2 # Checkout the repository code
      - name: Label PR based on size
        uses: cbrgm/pr-size-labeler-action@main
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }} # Pass the GitHub token for authentication
          github_repository: ${{ github.repository }} # Pass the repository name
          github_pr_number: ${{ github.event.number }} # Pass the pull request number
          config_file_path: '.github/pull-request-size.yml' # Specify the path to the configuration file
          github_enterprise_url: '' # Optional: GitHub Enterprise URL (e.g., https://github.mycompany.com)

Inputs

Input Description Required Default
github_token GitHub token to authenticate with Yes -
github_repository The name of the repository in format owner/repository Yes -
github_pr_number The number of your pull request Yes -
config_file_path The path to the configuration file No .github/pull-request-size.yml
github_enterprise_url The base URL for GitHub Enterprise (if applicable) No -

GitHub Enterprise Support

For GitHub Enterprise instances, specify the base URL of your GitHub Enterprise server:

- name: Label PR based on size
  uses: cbrgm/pr-size-labeler-action@main
  with:
    github_token: ${{ secrets.GITHUB_TOKEN }}
    github_repository: ${{ github.repository }}
    github_pr_number: ${{ github.event.number }}
    github_enterprise_url: 'https://github.mycompany.com'

Example Config

# Configuration for PR Size Labeler

# List of files to exclude from size calculation
# Files matching these patterns will not be considered when calculating PR size
exclude_files:
  - "foo.bar"  # Example: Exclude 'foo.bar' file
  - "*.xyz"

# Configuration for labeling based on the size of the Pull Request
# Each entry defines a size label, along with thresholds for diff and file count
label_configs:
  # Configuration for 'extra small' PRs
  - size: xs
    diff: 25    # Threshold for the total lines of code changed (additions + deletions)
    files: 1    # Threshold for the total number of files changed
    labels: ["size/xs"]  # Labels to be applied for this size

  # Configuration for 'small' PRs
  - size: s
    diff: 150
    files: 10
    labels: ["size/s"]

  # Configuration for 'medium' PRs
  - size: m
    diff: 600
    files: 25
    labels: ["size/m", "pairing-wanted"]

  # Configuration for 'large' PRs
  - size: l
    diff: 2500
    files: 50
    labels: ["size/l", "pairing-wanted"]

  # Configuration for 'extra large' PRs
  - size: xl
    diff: 5000
    files: 100
    labels: ["size/xl", "pairing-wanted"]

# In case you don't want to count deleted lines and files into
# your size labels, you can change this to true:
added_lines_only: false

Local Development

You can build this action from source using Go:

make build

High-Level Functionality

sequenceDiagram
    participant GitHubAction as pr-size-labeler-action
    participant GitHubAPI

    Note over GitHubAction, GitHubAPI: GitHub Action: Pull Request Size Labeler

    GitHubAction->>GitHubAPI: Initialize GitHub Client
    activate GitHubAPI
    GitHubAPI-->>GitHubAction: Client Initialized
    deactivate GitHubAPI

    GitHubAction->>GitHubAPI: Fetch PR Files
    activate GitHubAPI
    GitHubAPI-->>GitHubAction: PR Files Returned
    deactivate GitHubAPI

    GitHubAction->>GitHubAction: Calculate Size and Diff

    GitHubAction->>GitHubAPI: Update PR Labels
    activate GitHubAPI
    GitHubAPI-->>GitHubAction: PR Labels Updated
    deactivate GitHubAPI

    GitHubAction->>GitHubAction: Action Completed

Loading

Contributing & License

  • Contributions Welcome!: Interested in improving or adding features? Check our Contributing Guide for instructions on submitting changes and setting up development environment.
  • Open-Source & Free: Developed in my spare time, available for free under Apache 2.0 License. License details your rights and obligations.
  • Your Involvement Matters: Code contributions, suggestions, feedback crucial for improvement and success. Let's maintain it as a useful resource for all 🌍.

About

Automatically labels pull requests in your GitHub repository based on the size of changes.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •