A GitHub Action to setup LocalStack on your GitHub Actions runner workflow by:
- Pulling a specific version of the LocalStack Docker Image into the GitHub Action runner.
 - Configuring the LocalStack CLI to launch the Docker container with an optional API token for pro usage.
 - Installing LocalStack AWS CLI, a thin wrapper around the 
awscommand line interface for use with LocalStack to run integration tests over AWS services. - Export/import LocalStack state as an artifact
 - Save/load LocalStack Cloud Pods
 - Start/stop a LocalStack Ephemeral Instance (PREVIEW)
 
- name: Start LocalStack uses: LocalStack/setup-localstack@v0.2.3 with: image-tag: 'latest' install-awslocal: 'true' env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}NOTE: The
LOCALSTACK_API_KEYenvironment variable is required to be set ifuse-prois set totrue.
If the key is not found LocalStack by default falls back to the CE edition and displays a warning.
- name: Install LocalStack CLIs uses: LocalStack/setup-localstack@v0.2.3 with: skip-startup: 'true' install-awslocal: 'true' ... - name: Start LocalStack uses: LocalStack/setup-localstack@v0.2.3 with: image-tag: 'latest' env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}- name: Save LocalStack State uses: LocalStack/setup-localstack@v0.2.3 with: install-awslocal: 'true' state-backend: cloud-pods state-action: save state-name: my-cloud-pod env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}NOTE: The
LOCALSTACK_API_KEYenvironment variable is required to be set to save/load LocalStack's state either as a Cloud Pod or as a file artifact.
- name: Start LocalStack and Load State uses: LocalStack/setup-localstack@v0.2.3 with: install-awslocal: 'true' state-backend: cloud-pods state-action: load state-name: my-cloud-pod env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}NOTE: To load a local state from a different GitHub Actions workflow, one must set the
WORKFLOW_IDenvironment variable.
NOTE: The
LOCALSTACK_API_KEYenvironment variable is required to be set to save/load LocalStack's state either as a Cloud Pod or as a file artifact.
uses: LocalStack/setup-localstack@v0.2.3 with: github-token: ${{ secrets.GITHUB_TOKEN }} state-backend: ephemeral state-action: start # Adding this option prevents Ephemeral Instance to be stopped after the `preview-cmd` run skip-ephemeral-stop: 'true' # Optional script/command to run preview-cmd: deploy.sh env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} ... with: uses: LocalStack/setup-localstack@v0.2.3 with: github-token: ${{ secrets.GITHUB_TOKEN }} state-backend: ephemeral state-action: stop env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}| Input | Description | Default | 
|---|---|---|
auto-load-pod |  Which pod to load on startup of LocalStack (application preview) | None |  
ci-project |  Name of the CI project to track in LocalStack Cloud | |
configuration |  Configuration variables to use while starting LocalStack container | None |  
extension-auto-install |  Which extensions to install on startup of LocalStack (application preview) | None |  
github-token |  Github token used to create PR comments | |
image-tag |  Tag of the LocalStack Docker image to use | latest |  
include-preview |  Whether to include the created Ephemeral Instance URL in the PR comment | false |  
install-awslocal |  Whether to install the awslocal CLI into the build environment |  true |  
lifetime |  How long an ephemeral instance should live | 30 | 
preview-cmd |  Command(s) used to create a Ephemeral Instance of the PR (can use $AWS_ENDPOINT_URL) |  |
skip-ephemeral-stop |  Skip stopping LocalStack Ephemeral Instance | false |  
skip-startup |  Explicitly prevent LocalStack start up, only installs CLI(s). Recommended to manage state later on in the pipeline or start up an ephemeral instance. | false |  
skip-wait |  Skip waiting for LocalStack to start up | false |  
state-action |  Valid values are load, save, start, stop, `` (empty, don't manage state). Values start/`stop` only usable with app previews. |  `` | 
state-backend |  Either store the state of LocalStack locally, as a Cloud Pod or start an Ephemeral Instance. Valid values are cloud-pods, ephemeral or local. Use this option in unison with state-action to control behaviour. |  cloud-pods |  
state-name |  Name of the state artifact (without extension) | false |  
use-pro |  Whether to use the Pro version of LocalStack (requires API key to be configured) | false |  
name: LocalStack Test on: [ push, pull_request ] jobs: localstack-action-test: name: 'Test LocalStack GitHub Action' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Start LocalStack uses: LocalStack/setup-localstack@v0.2.3 with: image-tag: 'latest' install-awslocal: 'true' configuration: DEBUG=1 use-pro: 'true' state-backend: cloud-pods state-action: load state-name: my-cloud-pod env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} - name: Run Tests against LocalStack run: |  awslocal s3 mb s3://test  awslocal s3 ls  echo "Test Execution complete!"   - name: Save LocalStack State uses: LocalStack/setup-localstack@v0.2.3 with: state-backend: local state-action: save state-name: my-ls-state-artifact env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} WORKFLOW_ID: ${{ env.MY_GOLDEN_LS_STATE }}