Skip to content

Bump actions/upload-artifact from 3 to 4 (#1120) #3102

Bump actions/upload-artifact from 3 to 4 (#1120)

Bump actions/upload-artifact from 3 to 4 (#1120) #3102

Workflow file for this run

name: Build/test/deploy
on:
workflow_dispatch:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
run-quality-checks:
name: πŸ“‹ Run quality checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Restore node_modules from cache
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: v1-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install NPM packages
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
- name: Prettier
run: yarn prettier:check
- name: Run linters
run: yarn lint
- name: Run type check
run: yarn tsc
run-tests:
name: πŸ§ͺ Run tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Restore node_modules from cache
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: v1-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install NPM packages
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
- name: Run all tests
run: yarn test
run-stryker:
name: πŸ‘½ Run stryker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Restore node_modules from cache
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: v1-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install NPM packages
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
- name: Run mutation tests
run: yarn stryker
- name: Upload test report artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: test-reports
path: build/reports
deploy:
name: πŸ›³ Deploy Stack via CDK
needs: [run-tests, run-quality-checks]
runs-on: ubuntu-latest
if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.event.ref == 'refs/heads/main') }}
steps:
- uses: actions/checkout@v4
- name: Restore node_modules from cache
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: v1-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install NPM packages
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4.0.1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-1
- name: Block concurrent runs
uses: softprops/turnstyle@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy Stack
run: |
yarn lambda:deploy \
--context apiKey=${{ secrets.DATABASE_API_KEY }} \
--context recipientEmails=${{ secrets.RECIPIENT_EMAILS }} \
--context versionFromGitHubActions=${{ github.run_id }}
- name: Write shows from file to Dynamo
run: npx ts-node ./tools/write-shows-from-file.ts
smoke-test:
name: πŸ’¨ Smoke Test
needs: [deploy]
runs-on: ubuntu-latest
env:
DATADOG_API_KEY: ${{ secrets.DD_API_KEY }}
DATADOG_APP_KEY: ${{ secrets.DD_APP_KEY }}
steps:
- uses: actions/checkout@v4
- name: Restore node_modules from cache
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: v1-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install NPM packages
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
- name: Smoke test
run: ./tools/smoke.sh