Skip to content

Project Reconcile

Project Reconcile #48

name: Project Reconcile
on:
workflow_dispatch:
inputs:
apply:
description: Apply project membership changes after reviewing the report
required: true
default: false
type: boolean
schedule:
- cron: "17 3 * * *"
concurrency:
group: project-reconcile
cancel-in-progress: false
permissions:
contents: read
jobs:
reconcile:
name: Reconcile Project 28
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Check out reconciliation source
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Reconcile organization issues
shell: bash
env:
GH_TOKEN: ${{ secrets.PROJECT_TOKEN }}
APPLY: ${{ github.event_name == 'schedule' || inputs.apply || false }}
ORGANIZATION: z-shell
PROJECT_NUMBER: "28"
REPORT_PATH: ${{ runner.temp }}/project-reconcile-summary.json
run: |
set -euo pipefail
args=()
if [[ "${APPLY}" == 'true' ]]; then
args+=(--apply)
fi
python3 scripts/project_reconcile_live.py \
--organization "${ORGANIZATION}" \
--project-number "${PROJECT_NUMBER}" \
--output "${REPORT_PATH}" --require-token "${args[@]}"
- name: Upload reconciliation report
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: project-reconcile-report
path: ${{ runner.temp }}/project-reconcile-summary.json
if-no-files-found: warn