From 6e93b8dd1f4491aac676f326ccdbcdaf0c2a70b8 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 30 Sep 2026 18:14:08 -0400 Subject: [PATCH 1/2] workflows: Run the agentic workflows on ubuntu-26.04 Match bootc's CI, which runs on ubuntu-26.04, and pin the image rather than floating on ubuntu-latest as AGENTS.md asks. bootc-ubuntu-setup, which the next commit uses for the drafter's tools, also only supports 24.04 and 26.04. The detection job needs its own override: gh-aw hardcodes ubuntu-latest for it rather than following runs-on. The framework jobs stay on gh-aw's default ubuntu-slim. Since gh-aw doesn't know the ubuntu-26.04 label, it treats it as a custom runner and adds a setup-node step to the agent job. Generated-by: AI Signed-off-by: Colin Walters --- .github/workflows/ci-triage.lock.yml | 13 +++++++++---- .github/workflows/ci-triage.md | 5 +++++ .github/workflows/drafter.lock.yml | 15 ++++++++++----- .github/workflows/drafter.md | 8 ++++++-- .github/workflows/fix.lock.yml | 15 ++++++++++----- .github/workflows/fix.md | 8 ++++++-- .github/workflows/queue-triage.lock.yml | 13 +++++++++---- .github/workflows/queue-triage.md | 5 +++++ .github/workflows/review.lock.yml | 15 ++++++++++----- .github/workflows/review.md | 8 ++++++-- .github/workflows/shared/workflow-rerun.md | 2 +- 11 files changed, 77 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ci-triage.lock.yml b/.github/workflows/ci-triage.lock.yml index 2d242a3..00ce70b 100644 --- a/.github/workflows/ci-triage.lock.yml +++ b/.github/workflows/ci-triage.lock.yml @@ -1,4 +1,4 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"8da1bb804961d98c133f044de7091d60e4778419b2496e093144074ea40953ff","body_hash":"bbc01afd40fdde602c9ba84569a6468ae4d5b44231402f2f9fb1b19b4573613c","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"}} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"53e74be513976af5ad091e96db5d78c57d425a2049b22f524b1c144234a399a5","body_hash":"bbc01afd40fdde602c9ba84569a6468ae4d5b44231402f2f9fb1b19b4573613c","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"},"agent_image_runner":"ubuntu-26.04"} # gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GH_AW_APP_PRIVATE_KEY","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/create-github-app-token","sha":"bcd2ba49218906704ab6c1aa796996da409d3eb1","version":"v3.2.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27","digest":"sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27@sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27","digest":"sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27@sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27","digest":"sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27@sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.27","digest":"sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.27@sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e","pinned_image":"ghcr.io/github/gh-aw-node@sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e"},{"image":"ghcr.io/github/github-mcp-server:v1.12.2","digest":"sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6","pinned_image":"ghcr.io/github/github-mcp-server:v1.12.2@sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6"}],"mcp_servers":[{"name":"github","tools":["get_commit","get_file_contents","get_latest_release","get_me","get_pull_request","get_pull_request_comments","get_pull_request_diff","get_pull_request_files","get_pull_request_review_comments","get_pull_request_reviews","get_pull_request_status","get_release_by_tag","get_tag","issue_read","list_branches","list_commits","list_issue_types","list_issues","list_pull_requests","list_releases","list_starred_repositories","list_tags","pull_request_read","search_code","search_issues","search_pull_requests","search_repositories"]},{"name":"safeoutputs","tools":["add_comment","missing_data","missing_tool","noop","workflow_rerun"]}]} # This file was automatically generated by gh-aw (v0.90.1). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md # @@ -413,7 +413,7 @@ jobs: agent: needs: activation if: needs.activation.outputs.daily_ai_credits_exceeded != 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: actions: read contents: read @@ -502,6 +502,11 @@ jobs: evidence_tmp="/tmp/gh-aw/agent_execution.json.tmp" printf '{"version":1,"component":"agent","run_id":%s,"run_attempt":%s,"state":"not_started"}\n' "$GITHUB_RUN_ID" "$GITHUB_RUN_ATTEMPT" > "$evidence_tmp" mv "$evidence_tmp" "/tmp/gh-aw/agent_execution.json" + - name: Setup Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: '24' + package-manager-cache: false - name: Create gh-aw temp directory run: bash "${RUNNER_TEMP}/gh-aw/actions/create_gh_aw_tmp_dir.sh" - name: Configure gh CLI for GitHub Enterprise @@ -1567,7 +1572,7 @@ jobs: - activation - agent if: always() && needs.agent.result != 'skipped' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: contents: read timeout-minutes: 10 @@ -2003,7 +2008,7 @@ jobs: - agent - detection if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'workflow_rerun') - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: actions: read contents: read diff --git a/.github/workflows/ci-triage.md b/.github/workflows/ci-triage.md index d6445b8..ce31dea 100644 --- a/.github/workflows/ci-triage.md +++ b/.github/workflows/ci-triage.md @@ -104,6 +104,8 @@ permissions: issues: read pull-requests: read +runs-on: ubuntu-26.04 + tools: # The agent runs in a sandboxed container. Keep the write-capable Actions # token isolated in the custom safe-output job rather than restricting the @@ -137,6 +139,9 @@ tools: integrity-proxy: false safe-outputs: + # The detection job defaults to ubuntu-latest rather than following runs-on. + threat-detection: + runs-on: ubuntu-26.04 github-app: client-id: ${{ vars.GH_AW_APP_CLIENT_ID }} private-key: ${{ secrets.GH_AW_APP_PRIVATE_KEY }} diff --git a/.github/workflows/drafter.lock.yml b/.github/workflows/drafter.lock.yml index 9db64c8..ffbfda0 100644 --- a/.github/workflows/drafter.lock.yml +++ b/.github/workflows/drafter.lock.yml @@ -1,4 +1,4 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"b3dc3b4c7981ad11bc68429f0c64f0f8fbbf28d7885910b30f7aeb89986f0c50","body_hash":"f04f240220f34ea76a677f7217bbeea2604823f741319cc9c87a141e943bd37e","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"}} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"fcefb93f1e204d73023aa369753d073c8bfdb4211004b0f02a182a049ba3b9d7","body_hash":"f04f240220f34ea76a677f7217bbeea2604823f741319cc9c87a141e943bd37e","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"},"agent_image_runner":"ubuntu-26.04"} # gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GH_AW_APP_PRIVATE_KEY","GH_AW_CI_TRIGGER_TOKEN","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/create-github-app-token","sha":"bcd2ba49218906704ab6c1aa796996da409d3eb1","version":"v3.2.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"},{"repo":"github/gh-aw-actions/setup-cli","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27","digest":"sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27@sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27","digest":"sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27@sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27","digest":"sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27@sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.27","digest":"sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.27@sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e","pinned_image":"ghcr.io/github/gh-aw-node@sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e"},{"image":"ghcr.io/github/github-mcp-server:v1.12.2","digest":"sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6","pinned_image":"ghcr.io/github/github-mcp-server:v1.12.2@sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6"}],"mcp_servers":[{"name":"github","tools":["issue_read","list_issue_types","list_issues","search_issues"]},{"name":"safeoutputs","tools":["create_pull_request","missing_data","missing_tool","noop"]}]} # This file was automatically generated by gh-aw (v0.90.1). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md # @@ -421,7 +421,7 @@ jobs: add_working_label: needs: pre_activation if: needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: issues: write steps: @@ -452,7 +452,7 @@ jobs: agent: needs: activation if: needs.activation.outputs.daily_ai_credits_exceeded != 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: contents: read issues: read @@ -540,6 +540,11 @@ jobs: uses: github/gh-aw-actions/setup-cli@7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1 # v0.90.1 with: version: 'v0.90.1' + - name: Setup Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: '24' + package-manager-cache: false - name: Create gh-aw temp directory run: bash "${RUNNER_TEMP}/gh-aw/actions/create_gh_aw_tmp_dir.sh" - name: Configure gh CLI for GitHub Enterprise @@ -1590,7 +1595,7 @@ jobs: - activation - agent if: always() && needs.agent.result != 'skipped' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: contents: read timeout-minutes: 10 @@ -1900,7 +1905,7 @@ jobs: - pre_activation - safe_outputs if: always() && needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: issues: write steps: diff --git a/.github/workflows/drafter.md b/.github/workflows/drafter.md index 3f51c45..33ee33a 100644 --- a/.github/workflows/drafter.md +++ b/.github/workflows/drafter.md @@ -15,6 +15,7 @@ permissions: contents: read issues: read +runs-on: ubuntu-26.04 imports: - shared/defaults.md # just and the gh-aw CLI, for recompiling lock files @@ -25,6 +26,9 @@ tools: toolsets: [issues] safe-outputs: + # The detection job defaults to ubuntu-latest rather than following runs-on. + threat-detection: + runs-on: ubuntu-26.04 github-app: client-id: ${{ vars.GH_AW_APP_CLIENT_ID }} private-key: ${{ secrets.GH_AW_APP_PRIVATE_KEY }} @@ -67,7 +71,7 @@ jobs: add_working_label: needs: pre_activation if: needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: issues: write steps: @@ -104,7 +108,7 @@ jobs: # PRs -- a bare `if: always()` there was found to strip a *different*, # still-running workflow's label out from under it. if: always() && needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: issues: write steps: diff --git a/.github/workflows/fix.lock.yml b/.github/workflows/fix.lock.yml index 6834422..236dc7a 100644 --- a/.github/workflows/fix.lock.yml +++ b/.github/workflows/fix.lock.yml @@ -1,4 +1,4 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"12cb25be45a713cd50e410ed9cc634b6827873484b8773b07cfa1c4acfb32ea4","body_hash":"37cbc9a96d1b7966caa5a78dbdce53a0d58b0cafdb1f9d3aca7ec850340ab4e7","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"}} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"8c2f872003c0909ac72d177adb1b1725e7f11a5564d4e998f44753fc116b9cb7","body_hash":"37cbc9a96d1b7966caa5a78dbdce53a0d58b0cafdb1f9d3aca7ec850340ab4e7","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"},"agent_image_runner":"ubuntu-26.04"} # gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GH_AW_APP_PRIVATE_KEY","GH_AW_CI_TRIGGER_TOKEN","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/create-github-app-token","sha":"bcd2ba49218906704ab6c1aa796996da409d3eb1","version":"v3.2.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"},{"repo":"github/gh-aw-actions/setup-cli","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27","digest":"sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27@sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27","digest":"sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27@sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27","digest":"sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27@sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.27","digest":"sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.27@sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e","pinned_image":"ghcr.io/github/gh-aw-node@sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e"},{"image":"ghcr.io/github/github-mcp-server:v1.12.2","digest":"sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6","pinned_image":"ghcr.io/github/github-mcp-server:v1.12.2@sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6"}],"has_pull_request":true,"mcp_servers":[{"name":"github","tools":["get_commit","get_file_contents","get_latest_release","get_me","get_pull_request","get_pull_request_comments","get_pull_request_diff","get_pull_request_files","get_pull_request_review_comments","get_pull_request_reviews","get_pull_request_status","get_release_by_tag","get_tag","issue_read","list_branches","list_commits","list_issue_types","list_issues","list_pull_requests","list_releases","list_starred_repositories","list_tags","pull_request_read","search_code","search_issues","search_pull_requests","search_repositories"]},{"name":"safeoutputs","tools":["add_comment","missing_data","missing_tool","noop","push_to_pull_request_branch","remove_labels"]}]} # This file was automatically generated by gh-aw (v0.90.1). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md # @@ -429,7 +429,7 @@ jobs: add_working_label: needs: pre_activation if: needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: pull-requests: write steps: @@ -460,7 +460,7 @@ jobs: agent: needs: activation if: needs.activation.outputs.daily_ai_credits_exceeded != 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: contents: read issues: read @@ -549,6 +549,11 @@ jobs: uses: github/gh-aw-actions/setup-cli@7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1 # v0.90.1 with: version: 'v0.90.1' + - name: Setup Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: '24' + package-manager-cache: false - name: Create gh-aw temp directory run: bash "${RUNNER_TEMP}/gh-aw/actions/create_gh_aw_tmp_dir.sh" - name: Configure gh CLI for GitHub Enterprise @@ -1623,7 +1628,7 @@ jobs: - activation - agent if: always() && needs.agent.result != 'skipped' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: contents: read timeout-minutes: 10 @@ -1937,7 +1942,7 @@ jobs: - pre_activation - safe_outputs if: always() && needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: pull-requests: write steps: diff --git a/.github/workflows/fix.md b/.github/workflows/fix.md index c1c52cd..c7f70b2 100644 --- a/.github/workflows/fix.md +++ b/.github/workflows/fix.md @@ -46,6 +46,7 @@ permissions: issues: read pull-requests: read +runs-on: ubuntu-26.04 imports: - shared/defaults.md # just and the gh-aw CLI, for recompiling lock files @@ -56,6 +57,9 @@ tools: toolsets: [default] safe-outputs: + # The detection job defaults to ubuntu-latest rather than following runs-on. + threat-detection: + runs-on: ubuntu-26.04 github-app: client-id: ${{ vars.GH_AW_APP_CLIENT_ID }} private-key: ${{ secrets.GH_AW_APP_PRIVATE_KEY }} @@ -91,7 +95,7 @@ jobs: add_working_label: needs: pre_activation if: needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: pull-requests: write steps: @@ -129,7 +133,7 @@ jobs: # (see above) remove the cross-workflow collision; this condition is # defense-in-depth against the same class of bug recurring. if: always() && needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: pull-requests: write steps: diff --git a/.github/workflows/queue-triage.lock.yml b/.github/workflows/queue-triage.lock.yml index 51181b8..f538fc7 100644 --- a/.github/workflows/queue-triage.lock.yml +++ b/.github/workflows/queue-triage.lock.yml @@ -1,4 +1,4 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"94d754acf49478ad6d505113b7b9770be92b4f6630b17b52ed32ba6820cf9fb4","body_hash":"8c4b72760f21ec2da10d8cad5ff6f8e5e51976a085f29104e79562bdfb620466","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"}} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"3b658f2b6eb4c8c8abcc51456c41970e35c517da24edba69bd35615868dd043a","body_hash":"8c4b72760f21ec2da10d8cad5ff6f8e5e51976a085f29104e79562bdfb620466","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"},"agent_image_runner":"ubuntu-26.04"} # gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GH_AW_APP_PRIVATE_KEY","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/create-github-app-token","sha":"bcd2ba49218906704ab6c1aa796996da409d3eb1","version":"v3.2.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27","digest":"sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27@sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27","digest":"sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27@sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27","digest":"sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27@sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.27","digest":"sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.27@sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e","pinned_image":"ghcr.io/github/gh-aw-node@sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e"},{"image":"ghcr.io/github/github-mcp-server:v1.12.2","digest":"sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6","pinned_image":"ghcr.io/github/github-mcp-server:v1.12.2@sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6"}],"mcp_servers":[{"name":"github","tools":["get_commit","get_file_contents","get_latest_release","get_me","get_pull_request","get_pull_request_comments","get_pull_request_diff","get_pull_request_files","get_pull_request_review_comments","get_pull_request_reviews","get_pull_request_status","get_release_by_tag","get_tag","issue_read","list_branches","list_commits","list_issue_types","list_issues","list_pull_requests","list_releases","list_starred_repositories","list_tags","pull_request_read","search_code","search_issues","search_pull_requests","search_repositories"]},{"name":"safeoutputs","tools":["add_comment","missing_data","missing_tool","noop","update_issue","workflow_rerun"]}]} # This file was automatically generated by gh-aw (v0.90.1). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md # @@ -409,7 +409,7 @@ jobs: agent: needs: activation if: needs.activation.outputs.daily_ai_credits_exceeded != 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: actions: read contents: read @@ -498,6 +498,11 @@ jobs: evidence_tmp="/tmp/gh-aw/agent_execution.json.tmp" printf '{"version":1,"component":"agent","run_id":%s,"run_attempt":%s,"state":"not_started"}\n' "$GITHUB_RUN_ID" "$GITHUB_RUN_ATTEMPT" > "$evidence_tmp" mv "$evidence_tmp" "/tmp/gh-aw/agent_execution.json" + - name: Setup Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: '24' + package-manager-cache: false - name: Create gh-aw temp directory run: bash "${RUNNER_TEMP}/gh-aw/actions/create_gh_aw_tmp_dir.sh" - name: Configure gh CLI for GitHub Enterprise @@ -1817,7 +1822,7 @@ jobs: - activation - agent if: always() && needs.agent.result != 'skipped' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: contents: read timeout-minutes: 10 @@ -2253,7 +2258,7 @@ jobs: - agent - detection if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'workflow_rerun') - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: actions: read contents: read diff --git a/.github/workflows/queue-triage.md b/.github/workflows/queue-triage.md index 2ac171b..1a9230b 100644 --- a/.github/workflows/queue-triage.md +++ b/.github/workflows/queue-triage.md @@ -96,6 +96,8 @@ permissions: issues: read pull-requests: read +runs-on: ubuntu-26.04 + tools: # The agent runs in a sandboxed container. Keep the write-capable Actions # token isolated in the custom safe-output job rather than restricting the @@ -119,6 +121,9 @@ tools: trusted-users: ["cgwaltersbot[bot]"] safe-outputs: + # The detection job defaults to ubuntu-latest rather than following runs-on. + threat-detection: + runs-on: ubuntu-26.04 github-app: client-id: ${{ vars.GH_AW_APP_CLIENT_ID }} private-key: ${{ secrets.GH_AW_APP_PRIVATE_KEY }} diff --git a/.github/workflows/review.lock.yml b/.github/workflows/review.lock.yml index b9d130b..e44d24b 100644 --- a/.github/workflows/review.lock.yml +++ b/.github/workflows/review.lock.yml @@ -1,4 +1,4 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"c664fc238c62db8cbe43f0537398df2a7414f50aa558d39b60d42a0a03c4830f","body_hash":"7653b9c1f85484a23b8e6041d62c203cd4b83a3f25da040e1619f620d1a952af","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"}} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"f227d6bc13e9b12c01233e2a70d01842416d8b7957db5e2a701d007f0ec28c43","body_hash":"7653b9c1f85484a23b8e6041d62c203cd4b83a3f25da040e1619f620d1a952af","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"},"agent_image_runner":"ubuntu-26.04"} # gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GH_AW_APP_PRIVATE_KEY","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/create-github-app-token","sha":"bcd2ba49218906704ab6c1aa796996da409d3eb1","version":"v3.2.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27","digest":"sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27@sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27","digest":"sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27@sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27","digest":"sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27@sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.27","digest":"sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.27@sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e","pinned_image":"ghcr.io/github/gh-aw-node@sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e"},{"image":"ghcr.io/github/github-mcp-server:v1.12.2","digest":"sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6","pinned_image":"ghcr.io/github/github-mcp-server:v1.12.2@sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6"}],"has_pull_request":true,"mcp_servers":[{"name":"github","tools":["get_commit","get_file_contents","get_latest_release","get_me","get_pull_request","get_pull_request_comments","get_pull_request_diff","get_pull_request_files","get_pull_request_review_comments","get_pull_request_reviews","get_pull_request_status","get_release_by_tag","get_tag","issue_read","list_branches","list_commits","list_issue_types","list_issues","list_pull_requests","list_releases","list_starred_repositories","list_tags","pull_request_read","search_code","search_issues","search_pull_requests","search_repositories"]},{"name":"safeoutputs","tools":["add_labels","missing_data","missing_tool","noop","remove_labels","submit_pull_request_review"]}]} # This file was automatically generated by gh-aw (v0.90.1). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md # @@ -425,7 +425,7 @@ jobs: add_working_label: needs: pre_activation if: needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: pull-requests: write steps: @@ -456,7 +456,7 @@ jobs: agent: needs: activation if: needs.activation.outputs.daily_ai_credits_exceeded != 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: contents: read issues: read @@ -541,6 +541,11 @@ jobs: evidence_tmp="/tmp/gh-aw/agent_execution.json.tmp" printf '{"version":1,"component":"agent","run_id":%s,"run_attempt":%s,"state":"not_started"}\n' "$GITHUB_RUN_ID" "$GITHUB_RUN_ATTEMPT" > "$evidence_tmp" mv "$evidence_tmp" "/tmp/gh-aw/agent_execution.json" + - name: Setup Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: '24' + package-manager-cache: false - name: Create gh-aw temp directory run: bash "${RUNNER_TEMP}/gh-aw/actions/create_gh_aw_tmp_dir.sh" - name: Configure gh CLI for GitHub Enterprise @@ -1592,7 +1597,7 @@ jobs: - activation - agent if: always() && needs.agent.result != 'skipped' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: contents: read timeout-minutes: 10 @@ -1906,7 +1911,7 @@ jobs: - pre_activation - safe_outputs if: always() && needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: pull-requests: write steps: diff --git a/.github/workflows/review.md b/.github/workflows/review.md index b3ac5f6..a8ae185 100644 --- a/.github/workflows/review.md +++ b/.github/workflows/review.md @@ -16,6 +16,7 @@ permissions: issues: read pull-requests: read +runs-on: ubuntu-26.04 imports: - shared/defaults.md tools: @@ -28,6 +29,9 @@ tools: trusted-users: ["${{ vars.GH_AW_APP_BOT_SLUG }}"] safe-outputs: + # The detection job defaults to ubuntu-latest rather than following runs-on. + threat-detection: + runs-on: ubuntu-26.04 github-app: client-id: ${{ vars.GH_AW_APP_CLIENT_ID }} private-key: ${{ secrets.GH_AW_APP_PRIVATE_KEY }} @@ -48,7 +52,7 @@ jobs: add_working_label: needs: pre_activation if: needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: pull-requests: write steps: @@ -79,7 +83,7 @@ jobs: # never started from clearing an in-progress signal it never set. See # fix.md's equivalent job for the live incident this defends against. if: always() && needs.pre_activation.outputs.activated == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: pull-requests: write steps: diff --git a/.github/workflows/shared/workflow-rerun.md b/.github/workflows/shared/workflow-rerun.md index bb3ff91..1d1384c 100644 --- a/.github/workflows/shared/workflow-rerun.md +++ b/.github/workflows/shared/workflow-rerun.md @@ -18,7 +18,7 @@ safe-outputs: transient infrastructure failure. Choose failed to rerun only failed jobs, or all to rerun every job. The target run is derived from this workflow's trigger and cannot be selected by the agent. - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 permissions: actions: read contents: read From 9b3c30508336c7e445c7dd9d85c3f110dc070170 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 30 Sep 2026 18:14:20 -0400 Subject: [PATCH 2/2] workflows: Use bootc-ubuntu-setup for the drafter and fix tools Use the org's standard runner setup action rather than an ad-hoc apt install of just, so these agents get the same host environment as the rest of bootc-dev's CI. It doesn't cover the gh-aw CLI, so that still comes from the gh-aw runtime. gh-aw pins the action to the SHA main resolved to at compile time (recorded in .github/aw/actions-lock.json), so picking up later changes to it needs a recompile. Generated-by: AI Signed-off-by: Colin Walters --- .github/aw/actions-lock.json | 5 +++++ .github/workflows/drafter.lock.yml | 12 +++++------- .github/workflows/fix.lock.yml | 12 +++++------- .github/workflows/shared/workflow-tools.md | 12 ++++++------ 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/.github/aw/actions-lock.json b/.github/aw/actions-lock.json index 655fa72..fb712f8 100644 --- a/.github/aw/actions-lock.json +++ b/.github/aw/actions-lock.json @@ -1,5 +1,10 @@ { "entries": { + "bootc-dev/actions/bootc-ubuntu-setup@main": { + "repo": "bootc-dev/actions/bootc-ubuntu-setup", + "version": "main", + "sha": "40859f0934be02542d553a24e8384c693e43e4a8" + }, "github/gh-aw-actions/setup-cli@v0.90.1": { "repo": "github/gh-aw-actions/setup-cli", "version": "v0.90.1", diff --git a/.github/workflows/drafter.lock.yml b/.github/workflows/drafter.lock.yml index ffbfda0..d4dd3c9 100644 --- a/.github/workflows/drafter.lock.yml +++ b/.github/workflows/drafter.lock.yml @@ -1,5 +1,5 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"fcefb93f1e204d73023aa369753d073c8bfdb4211004b0f02a182a049ba3b9d7","body_hash":"f04f240220f34ea76a677f7217bbeea2604823f741319cc9c87a141e943bd37e","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"},"agent_image_runner":"ubuntu-26.04"} -# gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GH_AW_APP_PRIVATE_KEY","GH_AW_CI_TRIGGER_TOKEN","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/create-github-app-token","sha":"bcd2ba49218906704ab6c1aa796996da409d3eb1","version":"v3.2.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"},{"repo":"github/gh-aw-actions/setup-cli","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27","digest":"sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27@sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27","digest":"sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27@sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27","digest":"sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27@sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.27","digest":"sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.27@sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e","pinned_image":"ghcr.io/github/gh-aw-node@sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e"},{"image":"ghcr.io/github/github-mcp-server:v1.12.2","digest":"sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6","pinned_image":"ghcr.io/github/github-mcp-server:v1.12.2@sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6"}],"mcp_servers":[{"name":"github","tools":["issue_read","list_issue_types","list_issues","search_issues"]},{"name":"safeoutputs","tools":["create_pull_request","missing_data","missing_tool","noop"]}]} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"7a469579966db0a11a8676563c73331261e7a99ce627789156bceef875e38cea","body_hash":"f04f240220f34ea76a677f7217bbeea2604823f741319cc9c87a141e943bd37e","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"},"agent_image_runner":"ubuntu-26.04"} +# gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GH_AW_APP_PRIVATE_KEY","GH_AW_CI_TRIGGER_TOKEN","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/create-github-app-token","sha":"bcd2ba49218906704ab6c1aa796996da409d3eb1","version":"v3.2.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"bootc-dev/actions/bootc-ubuntu-setup","sha":"40859f0934be02542d553a24e8384c693e43e4a8","version":"main"},{"repo":"github/gh-aw-actions/setup","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"},{"repo":"github/gh-aw-actions/setup-cli","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27","digest":"sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27@sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27","digest":"sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27@sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27","digest":"sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27@sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.27","digest":"sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.27@sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e","pinned_image":"ghcr.io/github/gh-aw-node@sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e"},{"image":"ghcr.io/github/github-mcp-server:v1.12.2","digest":"sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6","pinned_image":"ghcr.io/github/github-mcp-server:v1.12.2@sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6"}],"mcp_servers":[{"name":"github","tools":["issue_read","list_issue_types","list_issues","search_issues"]},{"name":"safeoutputs","tools":["create_pull_request","missing_data","missing_tool","noop"]}]} # This file was automatically generated by gh-aw (v0.90.1). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md # # ___ _ _ @@ -52,6 +52,7 @@ # - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 (source v9) # - actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 # - actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 +# - bootc-dev/actions/bootc-ubuntu-setup@40859f0934be02542d553a24e8384c693e43e4a8 # main # - github/gh-aw-actions/setup-cli@7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1 # v0.90.1 # - github/gh-aw-actions/setup@7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1 # v0.90.1 # @@ -556,11 +557,8 @@ jobs: with: name: activation path: /tmp/gh-aw - - name: Install just - run: | - set -euo pipefail - sudo apt-get update -q - sudo apt-get install -y -q just + - name: Bootc Ubuntu setup + uses: bootc-dev/actions/bootc-ubuntu-setup@40859f0934be02542d553a24e8384c693e43e4a8 # main - name: Configure Git credentials env: diff --git a/.github/workflows/fix.lock.yml b/.github/workflows/fix.lock.yml index 236dc7a..5c378b1 100644 --- a/.github/workflows/fix.lock.yml +++ b/.github/workflows/fix.lock.yml @@ -1,5 +1,5 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"8c2f872003c0909ac72d177adb1b1725e7f11a5564d4e998f44753fc116b9cb7","body_hash":"37cbc9a96d1b7966caa5a78dbdce53a0d58b0cafdb1f9d3aca7ec850340ab4e7","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"},"agent_image_runner":"ubuntu-26.04"} -# gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GH_AW_APP_PRIVATE_KEY","GH_AW_CI_TRIGGER_TOKEN","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/create-github-app-token","sha":"bcd2ba49218906704ab6c1aa796996da409d3eb1","version":"v3.2.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"},{"repo":"github/gh-aw-actions/setup-cli","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27","digest":"sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27@sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27","digest":"sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27@sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27","digest":"sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27@sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.27","digest":"sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.27@sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e","pinned_image":"ghcr.io/github/gh-aw-node@sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e"},{"image":"ghcr.io/github/github-mcp-server:v1.12.2","digest":"sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6","pinned_image":"ghcr.io/github/github-mcp-server:v1.12.2@sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6"}],"has_pull_request":true,"mcp_servers":[{"name":"github","tools":["get_commit","get_file_contents","get_latest_release","get_me","get_pull_request","get_pull_request_comments","get_pull_request_diff","get_pull_request_files","get_pull_request_review_comments","get_pull_request_reviews","get_pull_request_status","get_release_by_tag","get_tag","issue_read","list_branches","list_commits","list_issue_types","list_issues","list_pull_requests","list_releases","list_starred_repositories","list_tags","pull_request_read","search_code","search_issues","search_pull_requests","search_repositories"]},{"name":"safeoutputs","tools":["add_comment","missing_data","missing_tool","noop","push_to_pull_request_branch","remove_labels"]}]} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"d7de6ea0c6f6367897d8ebf5f07a8c560ee928a543d8c5424c168f0dcd229a60","body_hash":"37cbc9a96d1b7966caa5a78dbdce53a0d58b0cafdb1f9d3aca7ec850340ab4e7","compiler_version":"v0.90.1","strict":true,"agent_id":"claude","agent_model":"claude-opus-5-5","engine_versions":{"claude":"2.1.285"},"agent_image_runner":"ubuntu-26.04"} +# gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GH_AW_APP_PRIVATE_KEY","GH_AW_CI_TRIGGER_TOKEN","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/create-github-app-token","sha":"bcd2ba49218906704ab6c1aa796996da409d3eb1","version":"v3.2.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"bootc-dev/actions/bootc-ubuntu-setup","sha":"40859f0934be02542d553a24e8384c693e43e4a8","version":"main"},{"repo":"github/gh-aw-actions/setup","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"},{"repo":"github/gh-aw-actions/setup-cli","sha":"7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1","version":"v0.90.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27","digest":"sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.27@sha256:8d14865f96d57d9b4f22b30b3e148d2d926384f0aa543a139f15593e450f0e90"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27","digest":"sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.27@sha256:b767b95ad787fae126e0224e547e31daa22950aaa4f03c34e1224f3ce80f314e"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27","digest":"sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.27@sha256:c89d35cbc15c1c8614cc01da321a26a0685a71b51858965ce6fdd78252df64a9"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.27","digest":"sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.27@sha256:c9474061446b0c6f9958f3ddce83561217f1fa7f82d6058b2cbf1242bac472d0"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e","pinned_image":"ghcr.io/github/gh-aw-node@sha256:bac2192f6374d6262116399b34fc5e143d576f82719e90a18261cae7480f4d4e"},{"image":"ghcr.io/github/github-mcp-server:v1.12.2","digest":"sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6","pinned_image":"ghcr.io/github/github-mcp-server:v1.12.2@sha256:508a0857ec762b1ab1cece29193345b501fab1dd9d1228a7b617062954cecac6"}],"has_pull_request":true,"mcp_servers":[{"name":"github","tools":["get_commit","get_file_contents","get_latest_release","get_me","get_pull_request","get_pull_request_comments","get_pull_request_diff","get_pull_request_files","get_pull_request_review_comments","get_pull_request_reviews","get_pull_request_status","get_release_by_tag","get_tag","issue_read","list_branches","list_commits","list_issue_types","list_issues","list_pull_requests","list_releases","list_starred_repositories","list_tags","pull_request_read","search_code","search_issues","search_pull_requests","search_repositories"]},{"name":"safeoutputs","tools":["add_comment","missing_data","missing_tool","noop","push_to_pull_request_branch","remove_labels"]}]} # This file was automatically generated by gh-aw (v0.90.1). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md # # ___ _ _ @@ -52,6 +52,7 @@ # - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 (source v9) # - actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 # - actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 +# - bootc-dev/actions/bootc-ubuntu-setup@40859f0934be02542d553a24e8384c693e43e4a8 # main # - github/gh-aw-actions/setup-cli@7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1 # v0.90.1 # - github/gh-aw-actions/setup@7c1d4b7ab319216ef4a931cc3dcb0d7245144ff1 # v0.90.1 # @@ -565,11 +566,8 @@ jobs: with: name: activation path: /tmp/gh-aw - - name: Install just - run: | - set -euo pipefail - sudo apt-get update -q - sudo apt-get install -y -q just + - name: Bootc Ubuntu setup + uses: bootc-dev/actions/bootc-ubuntu-setup@40859f0934be02542d553a24e8384c693e43e4a8 # main - name: Configure Git credentials env: diff --git a/.github/workflows/shared/workflow-tools.md b/.github/workflows/shared/workflow-tools.md index 129cd7e..c261c7e 100644 --- a/.github/workflows/shared/workflow-tools.md +++ b/.github/workflows/shared/workflow-tools.md @@ -1,5 +1,5 @@ --- -description: just and the gh-aw CLI for recompiling lock files, installed before the agent starts +description: just (via bootc-ubuntu-setup) and the gh-aw CLI for recompiling lock files, installed before the agent starts # Tools the drafter and fix agents need to recompile lock files # (`just setup && just compile`). They're installed on the runner before the # agent starts because the agent can't install them from inside the AWF @@ -15,10 +15,10 @@ runtimes: gh-aw: {} # Custom steps run outside the sandbox, after checkout; see # https://github.github.com/gh-aw/reference/steps-jobs/ +# bootc-ubuntu-setup is the org's standard host setup; it installs just +# (among other things) and fails on runners other than Ubuntu 24.04/26.04, +# so importing workflows run on ubuntu-26.04. steps: - - name: Install just - run: | - set -euo pipefail - sudo apt-get update -q - sudo apt-get install -y -q just + - name: Bootc Ubuntu setup + uses: bootc-dev/actions/bootc-ubuntu-setup@main ---