This repository is a sample source application used to demonstrate LocalStack's AWS CodePipeline emulation. It showcases a full CI/CD workflow with CodeBuild (Maven build + JUnit tests), CodeDeploy (ECS blue/green deployment), and CloudFormation stack provisioning.
The application is a simple Java utility (MessageUtil) built with Maven and packaged as a JAR. The pipeline:
- Source — pulls this repository as the pipeline source.
- Build — uses CodeBuild with Amazon Corretto 11 to compile the Maven project and run JUnit tests, producing
target/messageUtil-1.0.jar. - Deploy — deploys an nginx-based Docker image (serving
index.html) to an ECS service via CodeDeploy blue/green deployment. - Provision — optionally creates an SQS queue via the included CloudFormation template.
.
├── Dockerfile # nginx image serving index.html
├── appspec.yml # CodeDeploy AppSpec for ECS blue/green deployment
├── buildspec.yml # CodeBuild build specification (Java/Maven)
├── cfn_stack.yaml # CloudFormation template — creates an SQS queue
├── index.html # Static HTML page served by nginx
├── pom.xml # Maven project descriptor for Message Utility
└── src/
├── main/java/MessageUtil.java # Java utility class
└── test/java/TestMessageUtil.java # JUnit tests- A valid LocalStack for AWS license, which provides a
LOCALSTACK_AUTH_TOKENrequired to run these samples. - Docker with access to the Docker socket.
lstk, installed vianpm install -g @localstack/lstkorbrew install localstack/tap/lstk. The AWS CLI is required bylstk aws.
export LOCALSTACK_AUTH_TOKEN=<your-auth-token>This repository is intended to be used as the source stage of a LocalStack CodePipeline sample. Refer to the parent pipeline repository for end-to-end setup instructions.
When used standalone, you can build the Maven project locally:
mvn installThis compiles MessageUtil.java, runs the JUnit tests, and produces target/messageUtil-1.0.jar.
test.sh runs this repository through a LocalStack CodePipeline:
- Source: a CodeStarSourceConnection action fetches
$REPOSITORYat$BRANCH(defaultlocalstack-samples/test-codepipeline-sourceatmain). - Build: a CodeBuild action runs
buildspec.yml, so the Maven build and the JUnit tests run in CodeBuild. - Deploy: a CloudFormation action creates
cfn_stack.yamlwith a queue name override.
It then checks that the build artifact holds target/messageUtil-1.0.jar with the compiled MessageUtil, and that the stack created the queue and output its URL. It needs javap (any JDK) and LocalStack started with a GitHub token for downloading the source:
LOCALSTACK_CODEPIPELINE_GH_TOKEN=<github-token> lstk start
./test.shPull public.ecr.aws/codebuild/amazonlinux-x86_64-standard:5.0 before the first run. LocalStack stops tracking a build if its image is still downloading a few seconds after the build starts.
CI runs the same test on every pull request against the pull request branch. The ECS blue/green deployment (appspec.yml, Dockerfile) is not covered.
Licensed under the Apache License 2.0. See LICENSE.