Skip to content

Commit

Permalink
Onboard to the GitHub workflow based issue-labeler (#731)
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffhandley authored Mar 9, 2025
1 parent 979fa74 commit 834ce2b
Show file tree
Hide file tree
Showing 6 changed files with 211 additions and 0 deletions.
17 changes: 17 additions & 0 deletions .github/workflows/labeler-build-predictor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
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@f0c098669828a134c0313adf3f58c1909e555d86 # v1.0.1
with:
rebuild: ${{ inputs.rebuild }}
13 changes: 13 additions & 0 deletions .github/workflows/labeler-cache-retention.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: "Labeler: Cache Retention"

on:
schedule:
- cron: "26 8 * * *" # 8:26 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@f0c098669828a134c0313adf3f58c1909e555d86 # v1.0.1
32 changes: 32 additions & 0 deletions .github/workflows/labeler-predict-issues.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
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@f0c098669828a134c0313adf3f58c1909e555d86 # v1.0.1
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"
43 changes: 43 additions & 0 deletions .github/workflows/labeler-predict-pulls.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
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
branches:
- 'main'

# 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@f0c098669828a134c0313adf3f58c1909e555d86 # v1.0.1
with:
model_cache_key: ${{ inputs.model_cache_key }}
pull_numbers: ${{ inputs.pull_numbers || github.event.number }}
label_prefix: "area-"
threshold: 0.40
default_label: "needs-area-label"
42 changes: 42 additions & 0 deletions .github/workflows/labeler-promote.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
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@f0c098669828a134c0313adf3f58c1909e555d86 # v1.0.1
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@f0c098669828a134c0313adf3f58c1909e555d86 # v1.0.1
with:
model_cache_key: ${{ inputs.model_cache_key }}
backup_cache_key: ${{ inputs.backup_cache_key }}
64 changes: 64 additions & 0 deletions .github/workflows/labeler-train.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
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

repository:
description: "The org/repo to download data from (defaults to current repository)"

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

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@f0c098669828a134c0313adf3f58c1909e555d86 # v1.0.1
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 }}
repository: ${{ inputs.repository }}
cache_key_suffix: ${{ inputs.cache_key_suffix }}
label_prefix: "area-"
threshold: 0.40

0 comments on commit 834ce2b

Please sign in to comment.