@@ -8,9 +8,10 @@ name: integ
88# Trigger model mirrors deploy.yml: build.yml completes -> workflow_run picks it
99# up in the trusted base-repo context (secrets/OIDC available even for fork PRs)
1010# -> we resolve whether the PR touches cdk/** or agent/** -> an admin approves
11- # the `integ` environment gate -> deploy/assert/destroy runs against the shared
12- # account -> a commit status `integ-smoke` is posted back to the PR head so it
13- # shows up as a (required) check that blocks merge.
11+ # the `deploy` environment gate (reused — same gate and role as deploy.yml) ->
12+ # deploy/assert/destroy runs against the shared account -> a commit status
13+ # `integ-smoke` is posted back to the PR head so it shows up as a (required)
14+ # check that blocks merge.
1415#
1516# Local dev path is unchanged: run `mise //cdk:integ` with your own AWS creds.
1617#
@@ -19,9 +20,10 @@ name: integ
1920on :
2021 # zizmor: ignore[dangerous-triggers] — intentional; workflow_run is required so
2122 # fork PRs can run against the shared account (a fork `pull_request` job gets no
22- # secrets/OIDC). Mitigations: build-success guard, path-filter, `integ`
23- # environment approval gate (admin reviews fork test code before it runs with
24- # the privileged role), least-privilege role, status-only tokens per job.
23+ # secrets/OIDC). Mitigations: build-success guard, path-filter, fork
24+ # `safe-to-test` label gate, `deploy` environment approval gate (admin reviews
25+ # fork test code before it runs with the deploy role), status-only tokens per
26+ # job.
2527 workflow_run :
2628 workflows : [build]
2729 types : [completed]
4143 # docs/cli-only PRs get an immediate green (skipped) status and never deadlock
4244 # the required check.
4345 resolve :
44- # Manual dispatch is restricted to main (defence in depth — the `integ `
46+ # Manual dispatch is restricted to main (defence in depth — the `deploy `
4547 # environment approval is the primary gate). PR runs come via workflow_run.
4648 if : >-
4749 (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main') ||
@@ -131,7 +133,7 @@ jobs:
131133
132134 # Fork-PR safety: only run fork-authored code after a maintainer has
133135 # applied the `safe-to-test` label (defence in depth on top of the
134- # `integ ` environment approval). If it's absent, leave the status
136+ # `deploy ` environment approval). If it's absent, leave the status
135137 # pending and don't run — re-trigger once the label is added.
136138 if [[ "$WF_HEAD_REPO" != "$REPO" ]]; then
137139 if ! LABELS=$(gh api "repos/$REPO/issues/$PR_NUMBER/labels" --jq '.[].name'); then
@@ -166,15 +168,16 @@ jobs:
166168 echo "PR #$PR_NUMBER has no cdk/** or agent/** changes — integ skipped (green)."
167169 fi
168170
169- # The admin-gated deploy -> assert -> destroy. The `integ` environment's
170- # required reviewer is the approval gate; while it waits, the integ-smoke
171- # status stays pending and merge stays blocked.
171+ # The admin-gated deploy -> assert -> destroy. The `deploy` environment's
172+ # required reviewers (coding-agents-admin / coding-agents-maintainers) are the
173+ # approval gate; while it waits, the integ-smoke status stays pending and merge
174+ # stays blocked. Reuses deploy.yml's environment/role — no separate integ role.
172175 integ :
173176 needs : resolve
174177 if : needs.resolve.outputs.applicable == 'true'
175178 name : CDK integ smoke (Task API)
176179 runs-on : ubuntu-latest
177- environment : integ
180+ environment : deploy
178181 timeout-minutes : 45
179182 permissions :
180183 id-token : write
@@ -184,25 +187,25 @@ jobs:
184187 MISE_EXPERIMENTAL : " 1"
185188 steps :
186189 - name : Checkout PR head (incl. forks)
187- uses : actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 .0.3
190+ uses : actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 .0.0
188191 with :
189- # Approving the `integ ` environment authorizes this fork-authored test
190- # code to run with the privileged role — the approver MUST review
192+ # Approving the `deploy ` environment authorizes this fork-authored test
193+ # code to run with the deploy role — the approver MUST review
191194 # cdk/test/integ/** changes before approving.
192195 repository : ${{ needs.resolve.outputs.head_repo }}
193196 ref : ${{ needs.resolve.outputs.head_sha }}
194197 persist-credentials : false
195198
196199 - name : Configure AWS credentials
197- uses : aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6.2.0
200+ uses : aws-actions/configure-aws-credentials@254c19bd240aabef8777f48595e9d2d7b972184b # v6.2.1
198201 with :
199202 role-to-assume : ${{ secrets.AWS_ROLE_TO_ASSUME }}
200203 # Fall back to us-east-1 if the repo variable is unset, so the action
201204 # never runs region-less (which would fail credential resolution).
202205 aws-region : ${{ vars.AWS_REGION || 'us-east-1' }}
203206
204207 - name : Install mise
205- uses : jdx/mise-action@dba19683ed58901619b14f395a24841710cb4925 # v4.1 .0
208+ uses : jdx/mise-action@e6a8b3978addb5a52f2b4cd9d91eafa7f0ab959d # v4.2 .0
206209 with :
207210 cache : true
208211
0 commit comments