name: Build, Lint & Tests on: push: branches: - main paths-ignore: - website/** - coverage/** pull_request: paths-ignore: - frontend/** - website/** - coverage/** jobs: build: runs-on: ubuntu-latest name: build services: # Label used to access the service container postgres: # Docker Hub image image: postgres # Provide the password for postgres env: POSTGRES_PASSWORD: postgres POSTGRES_INITDB_ARGS: "--no-sync" # Set health checks to wait until postgres has started ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - name: Use Node.js 20 uses: actions/setup-node@v4 with: node-version: 20.x cache: 'yarn' - run: yarn install --frozen-lockfile --ignore-scripts - run: yarn lint - run: yarn build:backend - run: yarn run test:report # This adds test results as github check to the workflow env: CI: true TEST_DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres - name: Upload test report to build # Done this way since external PRs would not be able to write the check. See https://github.com/marketplace/actions/test-reporter#recommended-setup-for-public-repositories uses: actions/upload-artifact@v4 if: (success() || failure()) && github.ref == 'refs/heads/main' with: name: test-results path: ./reports/jest-junit.xml