Deploy on LocalStack #163
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: Deploy on LocalStack | |
on: | |
push: | |
paths-ignore: | |
- 'README.md' | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
schedule: | |
# “At 00:00 on Sunday.” | |
- cron: "0 0 * * 0" | |
workflow_dispatch: | |
jobs: | |
cdk: | |
name: Setup infrastructure using CDK | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Start LocalStack | |
uses: LocalStack/[email protected] | |
env: | |
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} | |
DNS_ADDRESS: 0 | |
DEBUG: 1 | |
with: | |
use-pro: 'true' | |
- name: Install tflocal | |
run: pip install terraform-local | |
- name: Install CDK | |
run: | | |
npm install -g aws-cdk-local aws-cdk | |
cdklocal --version | |
- name: Install dependencies | |
run: yarn | |
- name: Prepare Lambda functions | |
run: yarn build:backend | |
- name: Bootstrap the infrastructure | |
run: | | |
yarn cdklocal bootstrap | |
sleep 10 | |
- name: Deploy the infrastructure | |
uses: nick-fields/retry@v2 | |
with: | |
max_attempts: 3 | |
retry_on: error | |
timeout_seconds: 120 | |
retry_wait_seconds: 10 | |
command: | | |
yarn cdklocal deploy | |
- 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@v3 | |
with: | |
name: diagnose.json.gz | |
path: ./diagnose.json.gz |