{"id":28344319,"url":"https://github.com/rehanvdm/cdk-express-pipeline","last_synced_at":"2026-03-02T07:20:43.203Z","repository":{"id":251844294,"uuid":"836544647","full_name":"rehanvdm/cdk-express-pipeline","owner":"rehanvdm","description":"CDK Express Pipelines is a library built on the AWS CDK, allowing you to define pipelines in a CDK-native method. It leverages the CDK CLI to compute and deploy the correct dependency graph between Waves, Stages, and Stacks using the .addDependency method, making it build-system agnostic and an alternative to AWS CDK Pipelines.","archived":false,"fork":false,"pushed_at":"2026-02-22T07:11:37.000Z","size":10661,"stargazers_count":63,"open_issues_count":6,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-22T13:43:52.305Z","etag":null,"topics":["cdk","devops","pipeline"],"latest_commit_sha":null,"homepage":"https://rehanvdm.github.io/cdk-express-pipeline/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rehanvdm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"rehanvdm","thanks_dev":null,"custom":null}},"created_at":"2024-08-01T04:37:20.000Z","updated_at":"2026-02-22T07:06:37.000Z","dependencies_parsed_at":"2025-11-28T13:07:13.868Z","dependency_job_id":null,"html_url":"https://github.com/rehanvdm/cdk-express-pipeline","commit_stats":null,"previous_names":["rehanvdm/cdk-express-pipeline"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/rehanvdm/cdk-express-pipeline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rehanvdm%2Fcdk-express-pipeline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rehanvdm%2Fcdk-express-pipeline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rehanvdm%2Fcdk-express-pipeline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rehanvdm%2Fcdk-express-pipeline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rehanvdm","download_url":"https://codeload.github.com/rehanvdm/cdk-express-pipeline/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rehanvdm%2Fcdk-express-pipeline/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29993528,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cdk","devops","pipeline"],"created_at":"2025-05-27T09:56:45.694Z","updated_at":"2026-03-02T07:20:43.185Z","avatar_url":"https://github.com/rehanvdm.png","language":"TypeScript","funding_links":["https://buymeacoffee.com/rehanvdm"],"categories":[],"sub_categories":[],"readme":"# CDK Express Pipeline\n\n[![npm version](https://badge.fury.io/js/cdk-express-pipeline.svg)](https://badge.fury.io/js/cdk-express-pipeline)\n[![PyPI version](https://badge.fury.io/py/cdk-express-pipeline.svg)](https://badge.fury.io/py/cdk-express-pipeline)\n\n\u003e [!IMPORTANT]\n\u003e Full documentation is available at [https://rehanvdm.github.io/cdk-express-pipeline/](https://rehanvdm.github.io/cdk-express-pipeline/).\n\n## What is CDK Express Pipeline?\n\n[CDK Express Pipeline](https://github.com/rehanvdm/cdk-express-pipeline/tree/main) is a library built on the AWS CDK,\nallowing you to define pipelines in a CDK-native method. It leverages the CDK CLI to compute and deploy the correct\ndependency graph between Waves, Stages, and Stacks using the \u003ccode\u003e.addDependency\u003c/code\u003e method, making it build-system\nagnostic and an alternative to AWS CDK Pipelines.\n\n## Key Features\n\n- **Build System Agnostic**: Works on any system for example your local machine, GitHub, GitLab, etc.\n- **Waves and Stages**: Define your pipeline structure using Waves and Stages\n- **Uses CDK CLI**: Uses the `cdk deploy` command to deploy your stacks\n- **Multi Account and Multi Region**: Supports deployments across multiple accounts and regions mad possible by `cdk bootstrap`\n- **Fast Deployments**: Make use of concurrent/parallel Stack deployments\n- **Multi-Language Support**: Supports **TS and Python** CDK\n- **Generated Mermaid Diagrams**: Generates diagrams for your pipeline structure\n- **Generated CI Workflows**: Generates CI workflows for your pipeline (only GitHub Actions supported for now, others welcome)\n\n## Quick Start\n\n```bash\nnpm install cdk-express-pipeline\n```\n\nLet's illustrate a common patten, deploying infra stacks before application stacks. The `IamStack` is only in the\n`us-east-1` region, while the `NetworkingStack` is in both `us-east-1` and `eu-west-1`.\n\nThe application stacks `AppAStack` and `AppBStack` depend on the networking stack and are deployed in both regions.\nThe `AppBStack` also depends on the `AppAStack`.\n\n```typescript\n//bin/your-app.ts\nconst app = new App();\nconst expressPipeline = new CdkExpressPipeline();\n\nconst regions = ['us-east-1', 'eu-west-1'];\n\nconst infraWave = expressPipeline.addWave('Infra');\nconst infraWaveUsEast1Stage = infraWave.addStage('us-east-1');\nconst infraWaveEuWest1Stage = infraWave.addStage('eu-west-1');\nnew IamStack(app, 'Iam', infraWaveUsEast1Stage);\nnew NetworkingStack(app, 'Networking', infraWaveUsEast1Stage);\nnew NetworkingStack(app, 'Networking', infraWaveEuWest1Stage);\n\nconst appWave = expressPipeline.addWave('Application');\nfor (const region of regions) {\n  const appWaveStage = appWave.addStage(region);\n  const appA = new AppAStack(app, 'AppA', appWaveStage);\n  const appB = new AppBStack(app, 'AppB', appWaveStage);\n  appB.addExpressDependency(appA);\n}\n\nexpressPipeline.synth([\n  infraWave,\n  appWave,\n], true, {});\n```\n\nRunning `cdk deploy '**' --concurrency 10` will deploy all stacks in the correct order based on their dependencies. This\nis indicated on the CLI output:\n\n```plaintext\nORDER OF DEPLOYMENT\n🌊 Waves  - Deployed sequentially.\n🏗 Stages - Deployed in parallel by default, unless the wave is marked `[Seq 🏗]` for sequential stage execution.\n📦 Stacks - Deployed after their dependent stacks within the stage (dependencies shown below them with ↳).\n           - Lines prefixed with a pipe (|) indicate stacks matching the CDK pattern.\n           - Stack deployment order within the stage is shown in square brackets (ex: [1])\n\n| 🌊 Infra\n|   🏗 us-east-1\n|     📦 Iam (Infra_us-east-1_Iam) [1]\n|     📦 Networking (Infra_us-east-1_Networking) [1]\n|   🏗 eu-west-1\n|     📦 Networking (Infra_eu-west-1_Networking) [1]\n| 🌊 Application\n|   🏗 us-east-1\n|     📦 AppA (Application_us-east-1_AppA) [1]\n|     📦 AppB (Application_us-east-1_AppB) [2]\n|        ↳ AppA\n|   🏗 eu-west-1\n|     📦 AppA (Application_eu-west-1_AppA) [1]\n|     📦 AppB (Application_eu-west-1_AppB) [2]\n|        ↳ AppA\n```\n\nA Mermaid diagram of the pipeline is saved to `./pipeline-deployment-order.md` automatically:\n\n```mermaid\ngraph TD\n    subgraph Wave0[\"🌊 Infra\"]\n        subgraph Wave0Stage0[\"🏗 us-east-1\"]\n            StackInfra_us_east_1_Iam[\"📦 Iam [1]\"]\n            StackInfra_us_east_1_Networking[\"📦 Networking [1]\"]\n        end\n        subgraph Wave0Stage1[\"🏗 eu-west-1\"]\n            StackInfra_eu_west_1_Networking[\"📦 Networking [1]\"]\n        end\n    end\n    subgraph Wave1[\"🌊 Application\"]\n        subgraph Wave1Stage0[\"🏗 us-east-1\"]\n            StackApplication_us_east_1_AppA[\"📦 AppA [1]\"]\n            StackApplication_us_east_1_AppB[\"📦 AppB [2]\"]\n        end\n        subgraph Wave1Stage1[\"🏗 eu-west-1\"]\n            StackApplication_eu_west_1_AppA[\"📦 AppA [1]\"]\n            StackApplication_eu_west_1_AppB[\"📦 AppB [2]\"]\n        end\n    end\n    StackApplication_us_east_1_AppA --\u003e StackApplication_us_east_1_AppB\n    StackApplication_eu_west_1_AppA --\u003e StackApplication_eu_west_1_AppB\n    Wave0 --\u003e Wave1\n```\n\nCDK Express Pipeline is build system agnostic, meaning you can run the `cdk deploy` command from any environment,\nsuch as your local machine, GitHub Actions, GitLab CI, etc. It includes a function to generate GitHub Actions workflow,\nmore build systems can be added as needed.\n\n## Next Steps\n\n\u003e [!IMPORTANT]\n\u003e Full documentation is available at [https://rehanvdm.github.io/cdk-express-pipeline/](https://rehanvdm.github.io/cdk-express-pipeline/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frehanvdm%2Fcdk-express-pipeline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frehanvdm%2Fcdk-express-pipeline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frehanvdm%2Fcdk-express-pipeline/lists"}