GitHub Workflows support for CDK Pipelines
Project description
CDK Pipelines for GitHub Workflows
NOTICE: this library is still not published to package managers. Stay tuned.
Deploy CDK applications through GitHub workflows.
Usage
Assuming you have a
Stage
called MyStage that includes CDK stacks for your app and you want to deploy it
to two AWS environments (BETA_ENV and PROD_ENV):
import { ShellStep } from 'aws-cdk-lib/pipelines';
import { GithubWorkflow } from 'cdk-pipelines-github';
const app = new App();
const pipeline = new GithubWorkflow(app, 'Pipeline', {
synth: new ShellStep('Build', {
commands: [
'yarn install',
'yarn build',
],
}),
workflowPath: '.github/workflows/deploy.yml',
});
pipeline.addStage(new MyStage(this, 'Beta', { env: BETA_ENV }));
pipeline.addStage(new MyStage(this, 'Prod', { env: PROD_ENV }));
app.synth();
When you run cdk synth, a deploy.yml workflow will be created under
.github/workflows in your repo. This workflow will deploy your application
based on the definition of the pipeline. In this case, it will the two stages in
sequence, and within each stage, it will deploy all the stacks according to
their dependency order and maximum parallelism. If you app uses assets, assets
will be published to the relevant destination environment.
The Pipeline class from cdk-pipelines-github is derived from the base CDK
Pipelines class, so most features should be supported out of the box. See the
CDK Pipelines
documentation for more details.
NOTES:
- Environments must be bootstrapped separately using
cdk bootstrap. See CDK Environment Bootstrapping for details. - The workflow expects the GitHub repository to include secrets with AWS
credentials (
AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEY).
Example
You can find an example usage in test/example-app.ts which includes a simple CDK app and a pipeline.
You can find a repository that uses this example here: eladb/test-app-cdkpipeline.
To run the example, clone this repository and install dependencies:
cd ~/projects # or some other playground space
git clone https://github.com/cdklabs/cdk-pipelines-github
cd cdk-pipelines-github
yarn
Now, create a new GitHub repository and clone it as well:
cd ~/projects
git clone https://github.com/myaccount/my-test-repository
You'll need to set up AWS credentials in your environment:
export AWS_ACCESS_KEY_ID=xxxx
export AWS_SECRET_ACCESS_KEY=xxxxx
Bootstrap your environments:
export CDK_NEW_BOOTSTRAP=1
npx cdk bootstrap aws://ACCOUNTID/us-east-1
npx cdk bootstrap aws://ACCOUNTID/eu-west-2
Now, run the manual-test.sh script when your working directory is the new repository:
cd ~/projects/my-test-repository
~/projects/cdk-piplines/github/test/manual-test.sh
This will produce a cdk.out directory and a .github/workflows/deploy.yml file.
Commit and push these files to your repo and you should see the deployment
workflow in action. Make sure your GitHub repository has AWS_ACCESS_KEY_ID and
AWS_SECRET_ACCESS_KEY secrets that can access the same account that you
synthesized against.
Not supported yet
This is work in progress. The following features are still not supported:
- Credentials and roles (document permissions required, etc)
- Support Docker image assets
- Anti-tamper check for CI runs (
synthshould fail ifCI=1and the workflow has changed) - Revise Documentation
Contributing
See CONTRIBUTING for more information.
License
This project is licensed under the Apache-2.0 License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cdk-pipelines-github-0.0.83.tar.gz.
File metadata
- Download URL: cdk-pipelines-github-0.0.83.tar.gz
- Upload date:
- Size: 184.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2db68c1f378e0dce5078b4335ef021ac6b4c088a22d99551fc0a4572f2ecf6ba
|
|
| MD5 |
9051222071ec0cb327f4e0871d41645c
|
|
| BLAKE2b-256 |
d67e78e3008ce54737dae8009e2fc3a12b2b354ab98ad43e8150085aacc08f11
|
File details
Details for the file cdk_pipelines_github-0.0.83-py3-none-any.whl.
File metadata
- Download URL: cdk_pipelines_github-0.0.83-py3-none-any.whl
- Upload date:
- Size: 182.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10802e24d9f226aaea464405c1bbb3c6419198689e9572e336092bfc637549c8
|
|
| MD5 |
e1035d8b6964ae5bbbec8903f920f80a
|
|
| BLAKE2b-256 |
0a501543c5687b854114da4dc85cfee969976460b9f4748f2469a723d565646f
|