aws-samples / aws-samples/sample-autonomous-cloud-coding-agents

feat(bootstrap): mise tasks and deploy.yml integration

Aperta
#127 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
ci-cd enhancement infra-cdk
Lingua principale
TypeScript
Stelle
143
Fork
46
Merge medio
3g 10h
PR unite (30g)
24

Descrizione

## Parent

Sub-issue 7 of #120 (RFC: Least-privilege CDK bootstrap policies as code)

## Branch strategy

`feat/bootstrap-cicd` → targets `feat/bootstrap-preflight`

## Estimated review time: ~20 min

## Summary

Wire the preflight validator into the deployment pipeline and local task dependency chain. Ensures no deploy happens without validation — in CI or locally.

## Deliverables

- [ ] Update `cdk/mise.toml`:
- Add task dependency: `deploy` depends on `preflight`
- Add `//cdk:bootstrap:check` task — CI-only variant (read-only, no deploy, just validation)
- Document `--force` override for emergency deploys that skip preflight
- [ ] Update `.github/workflows/deploy.yml`:
- Add `preflight` step before `cdk deploy` step
- Preflight uses read-only AWS credentials (only `cloudformation:DescribeStacks`)
- Preflight failure blocks the deploy with clear output
- [ ] Update `.github/workflows/build.yml`:
- Add `bootstrap:check` step after synth
- Validates generated `cdk/bootstrap/` artifacts are up to date (no uncommitted drift)
- Validates Aspect passes (already happens during synth, but make explicit in CI output)
- [ ] Create `cdk/test/bootstrap/integration.test.ts`:
- End-to-end test: synth → aspect passes → preflight mock returns PASS → deploy would proceed
- End-to-end test: synth → aspect passes → preflight mock returns FAIL → deploy blocked

## Key design decisions

- **build.yml** (PR CI): runs Aspect via synth + checks generated artifacts are committed. No AWS credentials needed.
- **deploy.yml** (deploy CI): runs live preflight. Needs only `cloudformation:DescribeStacks` (not full deploy creds).
- Local `mise //cdk:deploy` depends on `preflight` — developers can't accidentally skip it. `--force` flag exists for emergencies but is documented as "you better know what you're doing."
- Preflight is a **separate step** (not embedded in deploy) so CI logs clearly show "preflight passed" vs "deploy started."

## Acceptance criteria

- `mise //cdk:deploy` fails if preflight fails (locally)
- `deploy.yml` blocks deploy on preflight failure
- `build.yml` catches stale generated artifacts
- Force-override is documented and works
- No regression in existing CI workflows

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia da cdk/mise.toml e dal task di preflight esistente, quindi esamina .github/workflows/deploy.yml e build.yml per comprendere gli attuali passaggi di synth e deploy. Aggiungi la dipendenza richiesta, i controlli CI, la separazione delle credenziali e la documentazione di force-override, quindi crea cdk/test/bootstrap/integration.test.ts che copra entrambi gli esiti del preflight. Il lavoro è completato quando i deploy locali e CI si bloccano in caso di errore, gli artefatti obsoleti vengono rilevati e i workflow esistenti non presentano regressioni.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
aws, github-actions, typescript
Ambito
build-system, ci-cd, devops
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Specificata chiaramente
Idoneità per principianti
68/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.