Skip to content
117 changes: 73 additions & 44 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,99 +1,128 @@
version: 2.1


orbs:
localstack: localstack/platform@2.1

python: circleci/python@4.0.0

jobs:
save-state:
executor: localstack/default
machine:
image: ubuntu-2204:current
environment:
AWS_DEFAULT_REGION: us-east-1
AWS_REGION: us-east-1
AWS_ACCESS_KEY_ID: test
AWS_SECRET_ACCESS_KEY: test
DEBUG: 1
LS_LOG: trace
steps:
- checkout
- restore_cache:
keys:
- python-deps-{{ checksum "requirements-dev.txt" }}
- python-deps

- run:
name: Install Python 3.11
name: Install LocalStack CLI + awslocal
command: |
# Currently highest available 3.11 on CircleCI runner
test -d /opt/circleci/.pyenv/versions/3.11.1 || pyenv install 3.11.1
pyenv global 3.11.1
- localstack/start
python3 -m pip install --user --upgrade pip
python3 -m pip install --user localstack awscli-local[ver1]
echo 'export PATH=$HOME/.local/bin:$PATH' >> "$BASH_ENV"

- run:
name: Start LocalStack
command: |
source "$BASH_ENV"
docker pull localstack/localstack:latest
localstack start -d
localstack wait -t 60

- run:
name: Install dependencies
command:
pip3 install -r requirements-dev.txt --upgrade
- localstack/wait
command: pip3 install -r requirements-dev.txt --upgrade

- run:
name: Build lambdas
command:
deployment/build-lambdas.sh

command: deployment/build-lambdas.sh

- run:
name: Deploy infrastructure
command:
deployment/awslocal/deploy.sh

command: deployment/awslocal/deploy.sh

- run:
name: Export state
command: localstack state export ls-state.zip
command: |
source "$BASH_ENV"
localstack state export ls-state.zip

- persist_to_workspace:
root: .
paths:
- ls-state.zip

- save_cache:
paths:
- /opt/circleci/.pyenv/versions/3.11.1
key: python-deps-{{ checksum "requirements-dev.txt" }}

- store_artifacts:
path: ls-state.zip


load-state:
executor: localstack/default
machine:
image: ubuntu-2204:current
environment:
AWS_DEFAULT_REGION: us-east-1
AWS_REGION: us-east-1
AWS_ACCESS_KEY_ID: test
AWS_SECRET_ACCESS_KEY: test
DEBUG: 1
LS_LOG: trace
AWS_DEFAULT_REGION: us-east-1
AWS_REGION: us-east-1
AWS_ACCESS_KEY_ID: test
AWS_SECRET_ACCESS_KEY: test
DEBUG: 1
LS_LOG: trace
steps:
- checkout
- restore_cache:
key: python-deps-

- run:
name: Choose python version
command:
pyenv global 3.11.1
- localstack/start
- checkout
name: Install LocalStack CLI + awslocal
command: |
python3 -m pip install --user --upgrade pip
python3 -m pip install --user localstack awscli-local[ver1]
echo 'export PATH=$HOME/.local/bin:$PATH' >> "$BASH_ENV"

- run:
name: Start LocalStack
command: |
source "$BASH_ENV"
docker pull localstack/localstack:latest
localstack start -d
localstack wait -t 60

- run:
name: Install dependencies
command:
pip3 install -r requirements-dev.txt
- localstack/wait
command: pip3 install -r requirements-dev.txt

- attach_workspace:
at: .

- run:
name: Import state
command: test -f ls-state.zip && localstack state import ls-state.zip
- run:
name: Run Tests
command:
pytest tests
command: |
source "$BASH_ENV"
test -f ls-state.zip && localstack state import ls-state.zip

- run:
when: on_fail
name: Dump Localstack logs
command: localstack logs | tee localstack.log
name: Dump LocalStack logs
command: |
source "$BASH_ENV"
localstack logs | tee localstack.log

- store_artifacts:
path: localstack.log


workflows:
do-tests:
jobs:
- save-state
- load-state:
requires: [save-state]
requires: [save-state]
2 changes: 1 addition & 1 deletion lambdas/resize/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Pillow==9.2.0
Pillow
2 changes: 1 addition & 1 deletion requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
boto3
requests>=2.20
Pillow==9.2.0
Pillow
mypy-boto3-ssm
mypy-boto3-sns
mypy-boto3-s3
Expand Down
Loading