Create and Test Cloud Pods #33
This file contains hidden or 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: Create and Test Cloud Pods | |
on: | |
schedule: | |
# At 00:00 on Saturday. | |
- cron: "0 0 * * 6" | |
push: | |
branches: | |
- main | |
workflow_dispatch: | |
permissions: | |
contents: write | |
actions: read | |
jobs: | |
create-cloud-pod: | |
name: Create Cloud Pods | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup Nodejs | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 22 | |
cache: 'npm' | |
- name: Install dependencies | |
run: | | |
make install | |
- name: Install CDK | |
run: | | |
npm install -g aws-cdk-local aws-cdk | |
cdklocal --version | |
- name: Start LocalStack | |
uses: LocalStack/setup-localstack@main | |
with: | |
image-tag: 'latest' | |
use-pro: 'true' | |
configuration: LS_LOG=trace | |
install-awslocal: 'true' | |
env: | |
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} | |
- name: Deploy the application | |
env: | |
AWS_ACCESS_KEY_ID: test | |
AWS_SECRET_ACCESS_KEY: test | |
AWS_DEFAULT_REGION: us-east-1 | |
run: | | |
make deploy | |
- name: Create Cloud Pod | |
env: | |
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} | |
run: | | |
message="Cloud Pod created: sample-cdk-rds on $(date) with workflow run id: ${{ github.run_id }}" | |
localstack pod save sample-cdk-rds --message "$message" | |
- name: Show LocalStack Logs | |
if: always() | |
run: | | |
localstack logs | |
test-cloud-pod: | |
name: Test Cloud Pod | |
needs: create-cloud-pod | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup Nodejs | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 22 | |
cache: 'npm' | |
- name: Start LocalStack | |
uses: LocalStack/setup-localstack@main | |
with: | |
use-pro: 'true' | |
install-awslocal: 'true' | |
env: | |
DEBUG: 1 | |
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} | |
- name: Load Cloud Pod | |
env: | |
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} | |
run: | | |
localstack pod load sample-cdk-rds | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Run Integration Tests | |
run: | | |
npm test | |
- name: Show LocalStack Logs | |
if: always() | |
run: | | |
localstack logs | |
- name: Send a Slack notification | |
if: failure() || github.event_name != 'pull_request' | |
uses: ravsamhq/notify-slack-action@v2 | |
with: | |
status: ${{ job.status }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
notification_title: "{workflow} has {status_message}" | |
message_format: "{emoji} *{workflow}* {status_message} in <{repo_url}|{repo}>" | |
footer: "Linked Repo <{repo_url}|{repo}> | <{run_url}|View Workflow run>" | |
notify_when: "failure" | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
- 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@v4 | |
with: | |
name: diagnose.json.gz | |
path: ./diagnose.json.gz |