chore: add updatedAt to schema #1370
Workflow file for this run
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: Continuous Integration | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
permissions: | |
contents: read | |
packages: write | |
deployments: write | |
id-token: write | |
env: | |
FORCE_COLOR: 1 | |
jobs: | |
unit-test: | |
name: Unit Test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v3 | |
with: | |
version: 8 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: pnpm | |
cache-dependency-path: pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Run Unit Tests | |
run: pnpm run test:ci --collect-coverage | |
- name: Upload Coverage | |
uses: codecov/codecov-action@v4 | |
if: always() | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
directory: coverage/unit | |
flags: unittests,node | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v3 | |
with: | |
version: 8 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: pnpm | |
cache-dependency-path: pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Run Lint | |
run: pnpm lint:ci | |
typescript: | |
name: Typescript | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v3 | |
with: | |
version: 8 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: pnpm | |
cache-dependency-path: pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Run tsc | |
run: pnpm tsc:ci | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v3 | |
with: | |
version: 8 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: pnpm | |
cache-dependency-path: pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Build | |
run: pnpm build:production | |
- name: Sentry Release | |
if: github.ref == 'refs/heads/main' | |
uses: getsentry/action-release@v1 | |
env: | |
SENTRY_ORG: rbberdk | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
SENTRY_PROJECT: node | |
with: | |
version: ${{ github.sha }} | |
sourcemaps: './dist' | |
finalize: false | |
environment: production | |
url_prefix: "/usr/src/app/dist/" | |
ignore_empty: true | |
ignore_missing: true | |
integration-test-matrix: | |
name: Integration Test | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
shard: [1, 2, 3, 4] | |
services: | |
redis: | |
image: redis | |
# Set health checks to wait until redis has started | |
options: >- | |
--health-cmd "redis-cli ping" | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
- 6380:6379 | |
postgres: | |
image: postgres | |
env: | |
POSTGRES_USERNAME: postgres | |
POSTGRES_PASSWORD: postgres | |
# Set health checks to wait until postgres has started | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
- 5433:5432 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v3 | |
with: | |
version: 8 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: pnpm | |
cache-dependency-path: pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Run Integration Tests | |
run: pnpm test:integration:ci --collect-coverage --shard ${{ matrix.shard }}/4 | |
- name: Upload Coverage | |
uses: codecov/codecov-action@v4 | |
if: always() | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
directory: coverage/integration | |
flags: integrationtests,node | |
integration-test: | |
# Summary of all test shards | |
# Inspired by https://github.com/orgs/community/discussions/26822#discussioncomment-5122101 | |
needs: [integration-test-matrix] | |
name: Integration Test | |
runs-on: ubuntu-latest | |
if: always() | |
steps: | |
- name: Check integration test results | |
# see https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#needs-context | |
# see https://stackoverflow.com/a/67532120/4907315 | |
if: >- | |
${{ | |
contains(needs.*.result, 'failure') | |
|| contains(needs.*.result, 'cancelled') | |
|| contains(needs.*.result, 'skipped') | |
}} | |
run: exit 1 | |
build-image: | |
name: Build Image | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: USERNAME | |
password: ${{ github.token }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build Image | |
uses: docker/build-push-action@v5 | |
with: | |
file: Dockerfile.prod | |
tags: | | |
ghcr.io/rubberdok/server:${{ github.sha }} | |
ghcr.io/rubberdok/server:latest | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
push: false |