This repository contains an infrastructure CDK project to create and manage all Serverless guru code challenge CI/CD infrastructure.
The cdk.json
file tells the CDK Toolkit how to execute your app.
This project is set up like a standard Python project. The initialization
process also creates a virtualenv within this project, stored under the .env
directory. To create the virtualenv it assumes that there is a python3
(or python
for Windows) executable in your path with access to the venv
package. If for any reason the automatic creation of the virtualenv fails,
you can create the virtualenv manually.
To manually create a virtualenv on MacOS and Linux:
python -m venv .env
After the init process completes and the virtualenv is created, you can use the following step to activate your virtualenv.
source .env/bin/activate
If you are a Windows platform, you would activate the virtualenv like this:
.env\Scripts\activate.bat
Once the virtualenv is activated, you can install the required dependencies.
pip install -r requirements.txt
At this point you can now synthesize the CloudFormation template for this code.
cdk synth
To add additional dependencies, for example other CDK libraries, just add
them to your setup.py
file and rerun the pip install -r requirements.txt
command.
A pre-commit configuration file is provided in this repo to perform some linterns, validations and so on in order to avoid commit code to the repo that later will fail in validations step in the build pipeline.
The first execution can be slower because of installation of dependencies. Further executions will use the pre-commit cache.
Once you have all the requirements achieved, you have to install pre-commit in the local repository:
pre-commit install
And you can test it's working with the following:
➜ pre-commit run --all-files
Trim Trailing Whitespace.................................................Passed
Check for added large files..............................................Passed
Check python ast.........................................................Passed
Check for case conflicts.................................................Passed
Check that executables have shebangs.................(no files to check)Skipped
Check JSON...............................................................Passed
Check for merge conflicts................................................Passed
Check vcs permalinks.....................................................Passed
Detect AWS Credentials...................................................Passed
Don't commit to branch...................................................Passed
Check github workflows format............................................Passed
Shell Syntax Check.......................................................Passed
Yaml lintern.............................................................Passed
Dockerfile linter........................................................Passed
Markdownlint.............................................................Passed
Python dependencies security check.......................................Passed
Flake8 linter............................................................Passed
Pycodestyle linter.......................................................Passed
Black python formatter...................................................Passed
cdk ls
list all stacks in the appcdk synth
emits the synthesized CloudFormation templatecdk deploy
deploy this stack to your default AWS account/regioncdk diff
compare deployed stack with current statecdk docs
open CDK documentationpycodestyle . --exclude .env
performs pycodestyle linter (requires pycodestyle to be installed)
Enjoy!