Skip to content

Releases: dotnet/issue-labeler

v1.0.1 - 2025-03-07 - Solidifying release process

07 Mar 11:27
f0c0986
Compare
Choose a tag to compare
Staging the v1.0.1 release (step 2) (#90)

v1.0.0 - 2025-03-06 - Initial version of GitHub workflow-based Issue Labeler

07 Mar 03:56
3fe21fb
Compare
Choose a tag to compare

Repositories adopting the v1.0.0 workflows must pin to the 3fe21fbd027653d2263d259333b154d33c157572 SHA using the following reusable workflow references. Note that pinning to a SHA requires using the full SHA.

/.github/workflows/labeler-train.yml

name: "Labeler: Train Models"

on:
  # Dispatched via the Actions UI, stages new models for promotion consideration
  # Each step of the workflow can be run independently: Download, Train, and Test
  workflow_dispatch:
    inputs:
      download_issues:
        description: "Issues: Download Data"
        type: boolean
        default: true
      train_issues:
        description: "Issues: Train Model"
        type: boolean
        default: true
      test_issues:
        description: "Issues: Test Model"
        type: boolean
        default: true
      download_pulls:
        description: "Pulls: Download Data"
        type: boolean
        default: true
      train_pulls:
        description: "Pulls: Train Model"
        type: boolean
        default: true
      test_pulls:
        description: "Pulls: Test Model"
        type: boolean
        default: true

      data_limit:
        description: "Max number of items to include in the model"
        type: number

      github_token:
        description: "The GitHub token (defaults to action token)"
        type: string
      repository:
        description: "The org/repo to download data from (defaults to current repository)"
        type: string
      cache_key_suffix:
        description: "The cache key suffix to use for staging data/models (use 'LIVE' to bypass staging)"
        type: string
        required: true
        default: "staging"

jobs:
  labeler-train:
    permissions:
      issues: read
      pull-requests: read
      actions: write
    uses: dotnet/issue-labeler/.github/workflows/train.yml@3fe21fbd027653d2263d259333b154d33c157572 # v1.0.0
    with:
      download_issues: ${{ inputs.download_issues }}
      train_issues: ${{ inputs.train_issues }}
      test_issues: ${{ inputs.test_issues }}
      download_pulls: ${{ inputs.download_pulls }}
      train_pulls: ${{ inputs.train_pulls }}
      test_pulls: ${{ inputs.test_pulls }}
      data_limit: ${{ inputs.data_limit && fromJSON(inputs.data_limit) || 0 }}
      github_token: ${{ inputs.github_token }}
      repository: ${{ inputs.repository }}
      cache_key_suffix: ${{ inputs.cache_key_suffix }}
      label_prefix: "area-"
      threshold: 0.40

/.github/workflows/labeler-promote.yml

name: "Labeler: Promote Models"

on:
  # Dispatched via the Actions UI, promotes the staged models from
  # a staging slot into the prediction environment
  workflow_dispatch:
    inputs:
      promote_issues:
        description: "Issues: Promote Model"
        type: boolean
        required: true
      promote_pulls:
        description: "Pulls: Promote Model"
        type: boolean
        required: true
      model_cache_key:
        description: "The cache key suffix to promote into the 'LIVE' cache"
        type: string
        required: true
        default: "staging"
      backup_cache_key:
        description: "The cache key suffix to use for backing up the currently promoted model"
        type: string
        default: "backup"

permissions:
  actions: write

jobs:
  labeler-promote-issues:
    if: ${{ inputs.promote_issues }}
    uses: dotnet/issue-labeler/.github/workflows/promote-issues.yml@3fe21fbd027653d2263d259333b154d33c157572 # v1.0.0
    with:
      model_cache_key: ${{ inputs.model_cache_key }}
      backup_cache_key: ${{ inputs.backup_cache_key }}

  labeler-promote-pulls:
    if: ${{ inputs.promote_pulls }}
    uses: dotnet/issue-labeler/.github/workflows/promote-pulls.yml@3fe21fbd027653d2263d259333b154d33c157572 # v1.0.0
    with:
      model_cache_key: ${{ inputs.model_cache_key }}
      backup_cache_key: ${{ inputs.backup_cache_key }}

/.github/workflows/labeler-predict-issues.yml

name: "Labeler: Predict Issue Labels"

on:
  # Only automatically predict area labels when issues are originally opened
  issues:
    types: opened

  # Allow dispatching the workflow via the Actions UI, specifying ranges of numbers
  workflow_dispatch:
    inputs:
      issue_numbers:
        description: "Issue Numbers (comma-separated list of ranges)"
        type: string
      model_cache_key:
        description: "The cache key suffix to use for loading the model"
        type: string
        required: true
        default: "LIVE"

jobs:
  predict-issues:
    # Do not run the workflow on forks outside the 'dotnet' org
    if: ${{ github.repository_owner == 'dotnet' && (inputs.issue_numbers || github.event.issue.number) }}
    permissions:
      issues: write
    uses: dotnet/issue-labeler/.github/workflows/predict-issues.yml@3fe21fbd027653d2263d259333b154d33c157572 # v1.0.0
    with:
      model_cache_key: ${{ inputs.model_cache_key }}
      issue_numbers: ${{ inputs.issue_numbers || github.event.issue.number }}
      label_prefix: "area-"
      threshold: 0.40
      default_label: "needs-area-label"

/.github/workflows/labeler-predict-pulls.yml

name: "Labeler: Predict Pull Labels"

on:
  # Per to the following documentation:
  # https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#pull_request_target
  #
  # The `pull_request_target` event runs in the context of the base of the pull request, rather
  # than in the context of the merge commit, as the `pull_request` event does. This prevents
  # execution of unsafe code from the head of the pull request that could alter the repository
  # or steal any secrets you use in your workflow. This event allows your workflow to do things
  # like label or comment on pull requests from forks.
  #
  # Only automatically predict area labels when pull requests are first opened
  pull_request_target:
    types: opened

  # Allow dispatching the workflow via the Actions UI, specifying ranges of numbers
  workflow_dispatch:
    inputs:
      pull_numbers:
        description: "Pull Numbers (comma-separated list of ranges)"
        type: string
      model_cache_key:
        description: "The cache key suffix to use for loading the model"
        type: string
        required: true
        default: "LIVE"

jobs:
  predict-pulls:
    # Do not run the workflow on forks outside the 'dotnet' org
    if: ${{ github.repository_owner == 'dotnet' && (inputs.pull_numbers || github.event.number) }}
    permissions:
      pull-requests: write
    uses: dotnet/issue-labeler/.github/workflows/predict-pulls.yml@3fe21fbd027653d2263d259333b154d33c157572 # v1.0.0
    with:
      model_cache_key: ${{ inputs.model_cache_key }}
      pull_numbers: ${{ inputs.pull_numbers || github.event.number }}
      label_prefix: "area-"
      threshold: 0.40

labeler-cache-retention.yml

name: "Labeler: Cache Retention"

on:
  schedule:
    - cron: "6 3 * * *" # 3:06 every day (arbitrary time daily)

  workflow_dispatch:

jobs:
  cache-retention:
    # Do not run the workflow on forks outside the 'dotnet' org
    if: ${{ github.repository_owner == 'dotnet' }}
    uses: dotnet/issue-labeler/.github/workflows/cache-retention.yml@3fe21fbd027653d2263d259333b154d33c157572 # v1.0.0

/.github/workflows/labeler-build-predictor.yml

name: "Labeler: Build Predictor App"

on:
  # Allow dispatching the workflow via the Actions UI
  workflow_dispatch:
    inputs:
      rebuild:
        description: "Force a rebuild of the app"
        type: boolean

jobs:
  build-predictor:
    permissions:
      actions: write
    uses: dotnet/issue-labeler/.github/workflows/build-predictor.yml@3fe21fbd027653d2263d259333b154d33c157572 # v1.0.0
    with:
      rebuild: ${{ inputs.rebuild }}