feat(ci): integrate ci analytics #10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run Integration Tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
schedule: | |
# “At 00:00 on Sunday.” | |
- cron: "0 0 * * 0" | |
workflow_dispatch: | |
inputs: | |
runner-os: | |
default: ubuntu-latest | |
type: choice | |
options: | |
- ubuntu-latest | |
jobs: | |
integration-test-job: | |
name: Run integration tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Checkout CI Extension | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GH_PULL_TOKEN }} | |
repository: localstack/localstack-ci-extension | |
path: localstack-ci-extension | |
- name: Checkout CI Extension Plugin | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GH_PULL_TOKEN }} | |
repository: localstack/localstack-ci-extension-plugins | |
path: localstack-ci-extension-plugins | |
- name: Set up Python 3.11 | |
id: setup-python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.11 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Set up Dependencies | |
env: | |
API_ENDPOINT: 'https://api.staging.aws.localstack.cloud/v1' | |
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} | |
run: | | |
pip install requests boto3 pytest localstack-sdk-python | |
pip install localstack-ci-extension-plugins/pytest_plugin | |
pip install localstack | |
- name: Prepare LocalStack | |
run: | | |
localstack extensions dev enable ./localstack-ci-extension | |
- name: Start LocalStack | |
env: | |
LS_LOG: trace | |
DEBUG: 1 | |
EXTENSION_DEV_MODE: 1 | |
DOCKER_FLAGS: -e API_ENDPOINT=https://api.staging.aws.localstack.cloud/v1 | |
API_ENDPOINT: 'https://api.staging.aws.localstack.cloud/v1' | |
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} | |
LOCALSTACK_PROJECT_ID: ${{ secrets.LOCALSTACK_PROJECT_ID }} | |
LOCALSTACK_PIPELINE_ID: ${{ secrets.LOCALSTACK_PIPELINE_ID }} | |
run: localstack start | |
- name: Deploy infrastructure | |
run: | | |
START_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ") | |
bash bin/deploy.sh | |
END_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ") | |
curl -X POST http://localhost:4566/_localstack/extensions/ci/steps \ | |
-H "Content-Type: application/json" \ | |
-d '[{ | |
"step_id": "deploy", | |
"name": "Deploy Infrastructure", | |
"step_type" : "deploy", | |
"state": "passed", | |
"time_start": "'"$START_TIME"'", | |
"time_end": "'"$END_TIME"'" | |
}]' | |
START_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ") | |
bash bin/seed.sh | |
END_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ") | |
curl -X POST http://localhost:4566/_localstack/extensions/ci/steps \ | |
-H "Content-Type: application/json" \ | |
-d '[{ | |
"step_id": "seed", | |
"name": "Seed Data", | |
"step_type" : "deploy", | |
"state": "passed", | |
"time_start": "'"$START_TIME"'", | |
"time_end": "'"$END_TIME"'" | |
}]' | |
- name: Run Tests | |
env: | |
AWS_DEFAULT_REGION: us-east-1 | |
AWS_REGION: us-east-1 | |
AWS_ACCESS_KEY_ID: test | |
AWS_SECRET_ACCESS_KEY: test | |
run: | | |
pytest tests | |
- name: Show localstack logs | |
if: always() | |
run: | | |
localstack logs | |
- name: Generate a Diagnostic Report | |
if: failure() | |
run: | | |
curl -s localhost:4566/_localstack/diagnose | gzip -cf > diagnose.json.gz | |
- name: Upload the Diagnostic Report | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: diagnose.json.gz | |
path: ./diagnose.json.gz |