Files
ChameleonUltra/.github/workflows/pr_review_cycle.yml
T
GameTec_live 0c1d5791b4
Deploy wiki to GitHub Pages with Jekyll / build (push) Canceled after 0s
Deploy wiki to GitHub Pages with Jekyll / deploy (push) Canceled after 0s
Firmware build / Build firmware (ultra) (push) Canceled after 0s
Push handler / Build Firmware (push) Canceled after 0s
Client build / Build client ((cd software/dist && zip -r "$OLDPWD/client-linux.zip" .) , linux, ubuntu-latest, true ) (push) Canceled after 0s
Client build / Build client (Compress-Archive -Path software\dist\* -DestinationPath client-windows.zip , windows, windows-latest, ? . ) (push) Canceled after 0s
Push handler / Create dev pre-release with artifacts (push) Canceled after 0s
Push handler / Create tagged release with artifacts (push) Canceled after 0s
Push handler / Start the next PR review cycle (push) Canceled after 0s
Firmware build / Build fw-builder Docker image (push) Canceled after 0s
Firmware build / Build firmware (lite) (push) Canceled after 0s
Client build / Build client ((cd software/dist && zip -r "$OLDPWD/client-macos.zip" .) , macos, macos-latest, true ) (push) Canceled after 0s
feat: automate review lifecycle
2026-08-10 22:49:09 +02:00

103 lines
3.2 KiB
YAML

name: PR review cycle
on:
# The tagged-release workflow calls this explicitly because events created by GITHUB_TOKEN do not normally start another workflow.
workflow_call:
inputs:
start_feature_freeze:
description: Label the next review batch
type: boolean
required: false
default: false
workflow_dispatch:
release:
types: [published]
pull_request_target:
types: [converted_to_draft, edited, ready_for_review, reopened, synchronize]
issue_comment:
types: [created]
schedule:
- cron: "23 4 * * *"
env:
DRAFT_WARNING_DAYS: 30
DRAFT_RESPONSE_DAYS: 14
DRAFT_CLOSE_DAYS: 30
permissions:
contents: read
issues: write
pull-requests: write
concurrency:
group: pr-review-cycle-${{ github.event.pull_request.number || github.event.issue.number || github.run_id }}
cancel-in-progress: false
jobs:
start-feature-freeze:
name: Start feature-freeze batch
if: >-
inputs.start_feature_freeze == true ||
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'release' && github.event.release.prerelease == false)
runs-on: ubuntu-latest
steps:
- name: Check out trusted automation
uses: actions/checkout@v7
with:
ref: ${{ github.event.repository.default_branch }}
- name: Label all currently ready PRs
uses: actions/github-script@v9
with:
script: |
const run = require('./.github/scripts/pr-review-cycle.js');
await run({ github, context, core, mode: 'start-feature-freeze' });
handle-pull-activity:
name: Update labels after PR activity
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-latest
steps:
- name: Check out trusted automation
uses: actions/checkout@v7
with:
ref: ${{ github.event.repository.default_branch }}
- name: Update the PR lifecycle
uses: actions/github-script@v9
with:
script: |
const run = require('./.github/scripts/pr-review-cycle.js');
await run({ github, context, core, mode: 'pull-activity' });
handle-discussion-activity:
name: Reset inactive draft after discussion
if: github.event_name == 'issue_comment' && github.event.issue.pull_request
runs-on: ubuntu-latest
steps:
- name: Check out trusted automation
uses: actions/checkout@v7
with:
ref: ${{ github.event.repository.default_branch }}
- name: Update the draft lifecycle
uses: actions/github-script@v9
with:
script: |
const run = require('./.github/scripts/pr-review-cycle.js');
await run({ github, context, core, mode: 'discussion-activity' });
scan-inactive-drafts:
name: Scan inactive drafts
if: github.event_name == 'schedule'
runs-on: ubuntu-latest
steps:
- name: Check out trusted automation
uses: actions/checkout@v7
with:
ref: ${{ github.event.repository.default_branch }}
- name: Warn, label, or close inactive drafts
uses: actions/github-script@v9
with:
script: |
const run = require('./.github/scripts/pr-review-cycle.js');
await run({ github, context, core, mode: 'scan-drafts' });