Skip to content

Biweekly Update Notes #6

Biweekly Update Notes

Biweekly Update Notes #6

Workflow file for this run

name: Biweekly Update Notes
on:
workflow_dispatch:
inputs:
since:
description: "Optional window start date, YYYY-MM-DD"
required: false
type: string
until:
description: "Optional window end date, YYYY-MM-DD"
required: false
type: string
force:
description: "Generate even if the inferred window is not due yet"
required: false
default: false
type: boolean
schedule:
# Runs weekly; the generator is the biweekly gate and no-ops until a window closes.
- cron: "17 3 * * 0"
permissions:
contents: read
concurrency:
group: biweekly-update-notes
cancel-in-progress: false
jobs:
draft-update-note-pr:
if: github.repository == 'huangruiteng/loopx'
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Generate update note draft
id: generate
env:
UPDATE_NOTES_SINCE: ${{ inputs.since }}
UPDATE_NOTES_UNTIL: ${{ inputs.until }}
UPDATE_NOTES_FORCE: ${{ inputs.force }}
run: |
set -euo pipefail
cmd=(python3 scripts/update_notes_release_job.py)
if [[ -n "${UPDATE_NOTES_SINCE}" || -n "${UPDATE_NOTES_UNTIL}" ]]; then
cmd+=(--since "${UPDATE_NOTES_SINCE}" --until "${UPDATE_NOTES_UNTIL}")
fi
if [[ "${UPDATE_NOTES_FORCE}" == "true" ]]; then
cmd+=(--force)
fi
"${cmd[@]}"
- name: Validate update-note archive
if: steps.generate.outputs.changed == 'true'
run: |
python3 -m py_compile scripts/update_notes_release_job.py examples/update-notes-archive-smoke.py examples/update-notes-generator-quality-smoke.py
python3 examples/update-notes-archive-smoke.py
python3 examples/update-notes-generator-quality-smoke.py
git diff --check
python3 -m loopx.cli check \
--scan-path .github/workflows/update-notes.yml \
--scan-path scripts/update_notes_release_job.py \
--scan-path docs/update-notes \
--scan-path examples/update-notes-archive-smoke.py \
--scan-path examples/update-notes-generator-quality-smoke.py
- name: Package reviewable draft
if: steps.generate.outputs.changed == 'true'
run: git diff --binary > update-note.patch
- name: Upload update-note draft
if: steps.generate.outputs.changed == 'true'
uses: actions/upload-artifact@v7
with:
name: biweekly-update-note-${{ steps.generate.outputs.window_slug }}
path: |
${{ steps.generate.outputs.note_file }}
docs/update-notes/README.md
update-note.patch
retention-days: 30