20 seconds. That’s how long it takes my Github Action to run a no-op cdk deploy
workflow.
The project is a basic microservice with a few Python Lambdas, an API Gateway, and other AWS resources, all defined in Typescript CDK. Obviously if Cloud Formation has to make a change it will take much longer, but the point is that this automated cloud process isn’t much slower than running on a dedicated instance or a laptop.
Actions recently added concurrency control (in beta), like AWS Code Pipeline, so you can prevent multiple processes from changing production (or other environments) at the same time.
Actions’ explicit caching feature lets you rebuild your python-dependencies.zip only when requirements.txt
changes. It also lets you cache node_modules
(for CDK) .
Note that if you are using Python, this Lambda zip file bundling trick is highly recommended. See my example build-python-zip.sh that uses this technique with Code Artifact, so even a cache-miss rebuild isn’t depending on public mirror servers.
All this takes is a single YAML file: here is my example deployment workflow. Unlike other CI/CD systems I have tried (including CDK Pipelines), I think this actually adds productivity for small / one-person teams, instead of subtracting it.