Create and Test Cloud Pods #62
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 lstk | |
| run: | | |
| npm install -g @localstack/lstk | |
| - name: Install CDK | |
| run: | | |
| npm install -g aws-cdk | |
| - name: Start LocalStack | |
| env: | |
| LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} | |
| LOCALSTACK_LS_LOG: trace | |
| run: | | |
| lstk start | |
| - 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: | | |
| lstk snapshot save pod:sample-cdk-rds | |
| - name: Show LocalStack Logs | |
| if: always() | |
| run: | | |
| lstk 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: Install lstk | |
| run: | | |
| npm install -g @localstack/lstk | |
| - name: Start LocalStack | |
| env: | |
| LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} | |
| LOCALSTACK_DEBUG: 1 | |
| run: | | |
| lstk start | |
| - name: Load Cloud Pod | |
| env: | |
| LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} | |
| run: | | |
| lstk snapshot load pod:sample-cdk-rds | |
| - name: Install dependencies | |
| run: | | |
| npm install | |
| - name: Run Integration Tests | |
| run: | | |
| npm test | |
| - name: Show LocalStack Logs | |
| if: always() | |
| run: | | |
| lstk 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 |