Agentic Maintenance #1245
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # ___ _ _ | |
| # / _ \ | | (_) | |
| # | |_| | __ _ ___ _ __ | |_ _ ___ | |
| # | _ |/ _` |/ _ \ '_ \| __| |/ __| | |
| # | | | | (_| | __/ | | | |_| | (__ | |
| # \_| |_/\__, |\___|_| |_|\__|_|\___| | |
| # __/ | | |
| # _ _ |___/ | |
| # | | | | / _| | | |
| # | | | | ___ _ __ _ __| |_| | _____ ____ | |
| # | |/\| |/ _ \ '__| |/ /| _| |/ _ \ \ /\ / / ___| | |
| # \ /\ / (_) | | | | ( | | | | (_) \ V V /\__ \ | |
| # \/ \/ \___/|_| |_|\_\|_| |_|\___/ \_/\_/ |___/ | |
| # | |
| # This file was automatically generated by pkg/workflow/maintenance_workflow.go (v0.69.2). DO NOT EDIT. | |
| # | |
| # To regenerate this workflow, run: | |
| # gh aw compile | |
| # Not all edits will cause changes to this file. | |
| # | |
| # For more information: https://github.github.com/gh-aw/introduction/overview/ | |
| # | |
| # Alternative regeneration methods: | |
| # make recompile | |
| # | |
| # Or use the gh-aw CLI directly: | |
| # ./gh-aw compile --validate --verbose | |
| # | |
| # The workflow is generated when any workflow uses the 'expires' field | |
| # in create-discussions, create-issues, or create-pull-request safe-outputs configuration. | |
| # Schedule frequency is automatically determined by the shortest expiration time. | |
| # | |
| name: Agentic Maintenance | |
| on: | |
| schedule: | |
| - cron: "37 */2 * * *" # Every 2 hours (based on minimum expires: 1 days) | |
| workflow_dispatch: | |
| inputs: | |
| operation: | |
| description: 'Optional maintenance operation to run' | |
| required: false | |
| type: choice | |
| default: '' | |
| options: | |
| - '' | |
| - 'disable' | |
| - 'enable' | |
| - 'update' | |
| - 'upgrade' | |
| - 'safe_outputs' | |
| - 'create_labels' | |
| - 'activity_report' | |
| - 'close_agentic_workflows_issues' | |
| - 'clean_cache_memories' | |
| - 'validate' | |
| run_url: | |
| description: 'Run URL or run ID to replay safe outputs from (e.g. https://github.com/owner/repo/actions/runs/12345 or 12345). Required when operation is safe_outputs.' | |
| required: false | |
| type: string | |
| default: '' | |
| workflow_call: | |
| inputs: | |
| operation: | |
| description: 'Optional maintenance operation to run (disable, enable, update, upgrade, safe_outputs, create_labels, activity_report, close_agentic_workflows_issues, clean_cache_memories, validate)' | |
| required: false | |
| type: string | |
| default: '' | |
| run_url: | |
| description: 'Run URL or run ID to replay safe outputs from (e.g. https://github.com/owner/repo/actions/runs/12345 or 12345). Required when operation is safe_outputs.' | |
| required: false | |
| type: string | |
| default: '' | |
| outputs: | |
| operation_completed: | |
| description: 'The maintenance operation that was completed (empty when none ran or a scheduled job ran)' | |
| value: ${{ jobs.run_operation.outputs.operation || inputs.operation }} | |
| applied_run_url: | |
| description: 'The run URL that safe outputs were applied from' | |
| value: ${{ jobs.apply_safe_outputs.outputs.run_url }} | |
| permissions: {} | |
| jobs: | |
| close-expired-entities: | |
| if: ${{ (!(github.event.repository.fork)) && (github.event_name != 'workflow_dispatch' && github.event_name != 'workflow_call' || inputs.operation == '') }} | |
| runs-on: ubuntu-slim | |
| permissions: | |
| discussions: write | |
| issues: write | |
| pull-requests: write | |
| steps: | |
| - name: Setup Scripts | |
| uses: github/gh-aw-actions/setup@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| destination: ${{ runner.temp }}/gh-aw/actions | |
| - name: Close expired discussions | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/close_expired_discussions.cjs'); | |
| await main(); | |
| - name: Close expired issues | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/close_expired_issues.cjs'); | |
| await main(); | |
| - name: Close expired pull requests | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/close_expired_pull_requests.cjs'); | |
| await main(); | |
| cleanup-cache-memory: | |
| if: ${{ (!(github.event.repository.fork)) && (github.event_name != 'workflow_dispatch' && github.event_name != 'workflow_call' || inputs.operation == '' || inputs.operation == 'clean_cache_memories') }} | |
| runs-on: ubuntu-slim | |
| permissions: | |
| actions: write | |
| steps: | |
| - name: Setup Scripts | |
| uses: github/gh-aw-actions/setup@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| destination: ${{ runner.temp }}/gh-aw/actions | |
| - name: Cleanup outdated cache-memory entries | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/cleanup_cache_memory.cjs'); | |
| await main(); | |
| run_operation: | |
| if: ${{ (github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call') && inputs.operation != '' && inputs.operation != 'safe_outputs' && inputs.operation != 'create_labels' && inputs.operation != 'activity_report' && inputs.operation != 'close_agentic_workflows_issues' && inputs.operation != 'clean_cache_memories' && inputs.operation != 'validate' && (!(github.event.repository.fork)) }} | |
| runs-on: ubuntu-slim | |
| permissions: | |
| actions: write | |
| contents: write | |
| pull-requests: write | |
| outputs: | |
| operation: ${{ steps.record.outputs.operation }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Scripts | |
| uses: github/gh-aw-actions/setup@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| destination: ${{ runner.temp }}/gh-aw/actions | |
| - name: Check admin/maintainer permissions | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/check_team_member.cjs'); | |
| await main(); | |
| - name: Install gh-aw | |
| uses: github/gh-aw-actions/setup-cli@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| version: v0.69.2 | |
| - name: Run operation | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GH_AW_OPERATION: ${{ inputs.operation }} | |
| GH_AW_CMD_PREFIX: gh aw | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/run_operation_update_upgrade.cjs'); | |
| await main(); | |
| - name: Record outputs | |
| id: record | |
| run: echo "operation=${{ inputs.operation }}" >> "$GITHUB_OUTPUT" | |
| apply_safe_outputs: | |
| if: ${{ (github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call') && inputs.operation == 'safe_outputs' && (!(github.event.repository.fork)) }} | |
| runs-on: ubuntu-slim | |
| permissions: | |
| actions: read | |
| contents: write | |
| discussions: write | |
| issues: write | |
| pull-requests: write | |
| outputs: | |
| run_url: ${{ steps.record.outputs.run_url }} | |
| steps: | |
| - name: Checkout actions folder | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| sparse-checkout: | | |
| actions | |
| persist-credentials: false | |
| - name: Setup Scripts | |
| uses: github/gh-aw-actions/setup@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| destination: ${{ runner.temp }}/gh-aw/actions | |
| - name: Check admin/maintainer permissions | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/check_team_member.cjs'); | |
| await main(); | |
| - name: Apply Safe Outputs | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GH_AW_RUN_URL: ${{ inputs.run_url }} | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/apply_safe_outputs_replay.cjs'); | |
| await main(); | |
| - name: Record outputs | |
| id: record | |
| run: echo "run_url=${{ inputs.run_url }}" >> "$GITHUB_OUTPUT" | |
| create_labels: | |
| if: ${{ (github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call') && inputs.operation == 'create_labels' && (!(github.event.repository.fork)) }} | |
| runs-on: ubuntu-slim | |
| permissions: | |
| contents: read | |
| issues: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Scripts | |
| uses: github/gh-aw-actions/setup@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| destination: ${{ runner.temp }}/gh-aw/actions | |
| - name: Check admin/maintainer permissions | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/check_team_member.cjs'); | |
| await main(); | |
| - name: Install gh-aw | |
| uses: github/gh-aw-actions/setup-cli@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| version: v0.69.2 | |
| - name: Create missing labels | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| env: | |
| GH_AW_CMD_PREFIX: gh aw | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/create_labels.cjs'); | |
| await main(); | |
| activity_report: | |
| if: ${{ (github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call') && inputs.operation == 'activity_report' && (!(github.event.repository.fork)) }} | |
| runs-on: ubuntu-slim | |
| timeout-minutes: 120 | |
| permissions: | |
| actions: read | |
| contents: read | |
| issues: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Scripts | |
| uses: github/gh-aw-actions/setup@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| destination: ${{ runner.temp }}/gh-aw/actions | |
| - name: Check admin/maintainer permissions | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/check_team_member.cjs'); | |
| await main(); | |
| - name: Install gh-aw | |
| uses: github/gh-aw-actions/setup-cli@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| version: v0.69.2 | |
| - name: Cache activity report logs | |
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | |
| with: | |
| path: ./.cache/gh-aw/activity-report-logs | |
| key: ${{ runner.os }}-activity-report-logs-${{ github.repository }}-${{ github.ref_name }}-${{ github.run_id }} | |
| restore-keys: | | |
| ${{ runner.os }}-activity-report-logs-${{ github.repository }}- | |
| ${{ runner.os }}-activity-report-logs- | |
| - name: Generate agentic workflow activity report | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GH_AW_CMD_PREFIX: gh aw | |
| GH_AW_ACTIVITY_REPORT_OUTPUT_DIR: ./.cache/gh-aw/activity-report-logs | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/run_activity_report.cjs'); | |
| await main(); | |
| close_agentic_workflows_issues: | |
| if: ${{ (github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call') && inputs.operation == 'close_agentic_workflows_issues' && (!(github.event.repository.fork)) }} | |
| runs-on: ubuntu-slim | |
| permissions: | |
| issues: write | |
| steps: | |
| - name: Setup Scripts | |
| uses: github/gh-aw-actions/setup@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| destination: ${{ runner.temp }}/gh-aw/actions | |
| - name: Check admin/maintainer permissions | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/check_team_member.cjs'); | |
| await main(); | |
| - name: Close no-repro agentic-workflows issues | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/close_agentic_workflows_issues.cjs'); | |
| await main(); | |
| validate_workflows: | |
| if: ${{ (github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call') && inputs.operation == 'validate' && (!(github.event.repository.fork)) }} | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| issues: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Scripts | |
| uses: github/gh-aw-actions/setup@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| destination: ${{ runner.temp }}/gh-aw/actions | |
| - name: Check admin/maintainer permissions | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/check_team_member.cjs'); | |
| await main(); | |
| - name: Install gh-aw | |
| uses: github/gh-aw-actions/setup-cli@dca90cae5e2ec0ef2275f97efcb832793c86e082 # v0.69.2 | |
| with: | |
| version: v0.69.2 | |
| - name: Validate workflows and file issue on findings | |
| uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9 | |
| env: | |
| GH_AW_CMD_PREFIX: gh aw | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); | |
| setupGlobals(core, github, context, exec, io, getOctokit); | |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/run_validate_workflows.cjs'); | |
| await main(); |