Merge pull request #7389 from opengovsg/release_v6.125.0 #17960
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 | |
on: | |
push: | |
pull_request: | |
types: [opened, reopened] | |
jobs: | |
# JOB to run change detection | |
changes: | |
runs-on: ubuntu-latest | |
# Set job outputs to values from filter step | |
outputs: | |
backend: ${{ steps.filter.outputs.backend }} | |
frontend: ${{ steps.filter.outputs.frontend }} | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: dorny/paths-filter@v2 | |
id: filter | |
with: | |
filters: | | |
frontend: | |
- __tests__/** | |
- shared/** | |
- frontend/** | |
backend: | |
- __tests__/** | |
- shared/** | |
- src/** | |
- package.json | |
- package-lock.json | |
install: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
- name: Cache Node modules | |
uses: actions/cache@v2 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.OS }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
- run: npm ci | |
build: | |
needs: install | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: mkdir -p build-output/ | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Load cached node_modules | |
- name: Cache Node modules | |
uses: actions/cache@v2 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.OS }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
- run: npm run build | |
env: | |
NODE_OPTIONS: '--max-old-space-size=4096 --openssl-legacy-provider' | |
- name: Upload build files | |
uses: actions/upload-artifact@v2 | |
if: always() | |
with: | |
name: build-output | |
path: | | |
package*.json | |
dist/ | |
frontend_test: | |
needs: [changes, install] | |
if: ${{ needs.changes.outputs.frontend == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Load cached node_modules | |
- name: Cache Node modules | |
uses: actions/cache@v2 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.OS }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
- name: Run frontend test | |
env: | |
NODE_OPTIONS: --max-old-space-size=4096 | |
run: npm run test:frontend | |
frontend_lint: | |
needs: [changes, install] | |
if: ${{ needs.changes.outputs.frontend == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Load cached node_modules | |
- name: Cache Node modules | |
uses: actions/cache@v2 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.OS }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
- run: npm run lint:frontend | |
backend_test: | |
needs: [changes, install, build] | |
if: ${{ needs.changes.outputs.backend == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
# prevent CI from failing when worker runs out of memory | |
# https://github.com/actions/runner-images/discussions/7188#discussioncomment-6750749 | |
- name: Increase swapfile | |
run: | | |
df -h | |
sudo swapoff -a | |
sudo fallocate -l 15G /swapfile | |
sudo chmod 600 /swapfile | |
sudo mkswap /swapfile | |
sudo swapon /swapfile | |
sudo swapon --show | |
- uses: actions/checkout@v2 | |
- uses: actions/download-artifact@v3 | |
if: always() | |
with: | |
name: build-output | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Load cached node_modules | |
- name: Cache Node modules | |
uses: actions/cache@v2 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.OS }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
- run: npm ci --prefix serverless/virus-scanner | |
- run: npm run test:backend:ci | |
env: | |
NODE_OPTIONS: '--max-old-space-size=4096' | |
- name: Coveralls | |
uses: coverallsapp/github-action@master | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
backend_lint: | |
needs: [changes, install] | |
if: ${{ needs.changes.outputs.backend == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Load cached node_modules | |
- name: Cache Node modules | |
uses: actions/cache@v2 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.OS }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
- run: npm run lint-ci | |
- run: npm_config_mode=yes npx lockfile-lint --type npm --path package.json --validate-https --allowed-hosts npm |