Temporarily raise exception to test lambda error handling #403
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: CI/CD | |
on: | |
pull_request: | |
branches: | |
- "main" | |
- "dev" | |
push: | |
branches: | |
- "main" | |
- "dev" | |
release: | |
types: [published] | |
jobs: | |
test_frontend: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./web | |
strategy: | |
matrix: | |
node-version: [16.x] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Setup node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v2 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install | |
run: yarn | |
- name: Test | |
run: yarn run test | |
env: | |
CI: true | |
- uses: ravsamhq/notify-slack-action@v2 | |
if: always() | |
with: | |
status: ${{ job.status }} | |
notification_title: "${{github.sha}} has {status_message}" | |
message_format: "{emoji} *{job}* {status_message}" | |
footer: "<{repo_url}|{repo}> | <{run_url}|View job>" | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
test_functions: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: "3.10" | |
- name: Install dependencies | |
run: pip install -r requirements.txt -r requirements-dev.txt | |
- name: Test | |
run: python -m pytest | |
working-directory: backend | |
- uses: ravsamhq/notify-slack-action@v2 | |
if: always() | |
with: | |
status: ${{ job.status }} | |
notification_title: "${{github.sha}} has {status_message}" | |
message_format: "{emoji} *{job}* {status_message}" | |
footer: "<{repo_url}|{repo}> | <{run_url}|View job>" | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
code-style: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: "3.10" | |
- uses: pre-commit/action@v2.0.3 | |
- uses: ravsamhq/notify-slack-action@v2 | |
if: always() | |
with: | |
status: ${{ job.status }} | |
notification_title: "${{github.sha}} has {status_message}" | |
message_format: "{emoji} *{job}* {status_message}" | |
footer: "<{repo_url}|{repo}> | <{run_url}|View job>" | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
build-and-deploy-web-app: | |
runs-on: ubuntu-latest | |
needs: test_frontend | |
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/release') | |
defaults: | |
run: | |
working-directory: ./web | |
strategy: | |
matrix: | |
node-version: [16.x] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Setup node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v1 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install | |
run: yarn | |
- name: Build dev deployment | |
if: github.ref == 'refs/heads/main' | |
run: yarn run build | |
env: | |
API_KEY_DIGITRANSIT: ${{ secrets.API_KEY_DIGITRANSIT }} | |
API_KEY_NLS: ${{ secrets.API_KEY_NLS }} | |
TILESERVER_URL: ${{ secrets.TILESERVER_URL }} | |
NLS_TILESERVER_URL: ${{ secrets.NLS_TILESERVER_URL }} | |
CITIES: "'Kangasala','Lempäälä','Nokia','Orivesi','Pirkkala','Tampere','Vesilahti','Ylöjärvi'" | |
- name: Deploy app build to dev S3 bucket | |
if: github.ref == 'refs/heads/main' | |
run: aws s3 sync ./dist/ s3://${{ secrets.AWS_BUCKET_NAME }} --delete | |
- name: Report to slack | |
if: github.ref == 'refs/heads/main' | |
uses: slackapi/slack-github-action@v1.22.0 | |
with: | |
payload: | | |
{ | |
"text": "${{github.sha}} deployed to dev frontend" | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
- name: Build production deployment | |
if: startsWith(github.ref, 'refs/tags/release') | |
run: yarn run build | |
env: | |
API_KEY_DIGITRANSIT: ${{ secrets.API_KEY_DIGITRANSIT }} | |
API_KEY_NLS: ${{ secrets.API_KEY_NLS }} | |
TILESERVER_URL: ${{ secrets.TAMPERE_TILESERVER_URL }} | |
NLS_TILESERVER_URL: ${{ secrets.TAMPERE_NLS_TILESERVER_URL }} | |
CITIES: "'Kangasala','Lempäälä','Nokia','Orivesi','Pirkkala','Tampere','Vesilahti','Ylöjärvi'" | |
DISABLED_LAYERS: "Roskikset;Penkit ja pöydät" | |
- name: Deploy app build to production S3 bucket | |
if: startsWith(github.ref, 'refs/tags/release') | |
run: aws s3 sync ./dist/ s3://${{ secrets.TAMPERE_AWS_BUCKET_NAME }} --delete | |
- name: Report to slack | |
if: startsWith(github.ref, 'refs/tags/release') | |
uses: slackapi/slack-github-action@v1.22.0 | |
with: | |
payload: | | |
{ | |
"text": "${{github.sha}} deployed to TAMPERE frontend" | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
build-and-deploy-lambda-functions: | |
runs-on: ubuntu-latest | |
needs: test_functions | |
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/release') | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: "3.10" | |
- name: Build zip files for lambda | |
run: make build-lambda | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_LAMBDA_UPLOAD_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_LAMBDA_UPLOAD_SECRET_ACCESS_KEY }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Update dev lambda functions | |
if: github.ref == 'refs/heads/main' | |
run: make prefix=tarmo-dev update-lambda -C infra | |
- name: Report to slack | |
if: github.ref == 'refs/heads/main' | |
uses: slackapi/slack-github-action@v1.22.0 | |
with: | |
payload: | | |
{ | |
"text": "dev lambda functions updated to ${{github.sha}}" | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
- name: Update dev database | |
if: github.ref == 'refs/heads/main' | |
run: make prefix=tarmo-dev migrate-db -C infra | |
- name: Report to slack | |
if: github.ref == 'refs/heads/main' | |
uses: slackapi/slack-github-action@v1.22.0 | |
with: | |
payload: | | |
{ | |
"text": "dev database updated to ${{github.sha}}" | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
- name: Update production lambda functions | |
if: startsWith(github.ref, 'refs/tags/release') | |
run: make prefix=tarmo-tampere update-lambda -C infra | |
- name: Report to slack | |
if: startsWith(github.ref, 'refs/tags/release') | |
uses: slackapi/slack-github-action@v1.22.0 | |
with: | |
payload: | | |
{ | |
"text": "TAMPERE lambda functions updated to ${{github.sha}}" | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
- name: Update production database | |
if: startsWith(github.ref, 'refs/tags/release') | |
run: make prefix=tarmo-tampere migrate-db -C infra | |
- name: Report to slack | |
if: startsWith(github.ref, 'refs/tags/release') | |
uses: slackapi/slack-github-action@v1.22.0 | |
with: | |
payload: | | |
{ | |
"text": "TAMPERE database updated to ${{github.sha}}" | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} |