.github/.github/workflows/cd-cdk.yaml
Adam Moussa 9a8d1f7736
Add reusable CD workflows and OIDC deploy roles template (#11)
Two reusable deploy workflows (cd-sam.yaml, cd-cdk.yaml) for
GitHub Actions OIDC-based deployments. CloudFormation template
provisions per-repo deploy roles for all 10 deployable repos.
2026-05-08 16:45:57 -04:00

73 lines
1.9 KiB
YAML

name: CD — CDK Deploy
on:
workflow_call:
inputs:
node-version:
description: "Node.js version to use"
type: string
default: "22"
python-version:
description: "Python version for Python CDK repos (leave empty for TypeScript CDK)"
type: string
default: ""
region:
description: "AWS region"
type: string
default: "us-east-1"
cdk-dir:
description: "Directory containing cdk.json"
type: string
default: "."
enable-qemu:
description: "Enable QEMU for cross-platform Docker builds (arm64 on x86 runners)"
type: boolean
default: false
secrets:
deploy-role-arn:
description: "OIDC deploy role ARN"
required: true
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v3
if: ${{ inputs.enable-qemu }}
- uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
- uses: actions/setup-python@v5
if: ${{ inputs.python-version != '' }}
with:
python-version: ${{ inputs.python-version }}
- name: Install Node dependencies
if: ${{ inputs.python-version == '' }}
run: npm ci
- name: Install Python dependencies
if: ${{ inputs.python-version != '' }}
working-directory: ${{ inputs.cdk-dir }}
run: |
for req in $(find . -name requirements.txt -not -path '*/node_modules/*'); do
pip install -r "$req"
done
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.deploy-role-arn }}
aws-region: ${{ inputs.region }}
- name: CDK deploy
working-directory: ${{ inputs.cdk-dir }}
run: npx -y cdk deploy --all --require-approval never