Skip to content

fix(shared): use APIError as contract between server and client #3630

fix(shared): use APIError as contract between server and client

fix(shared): use APIError as contract between server and client #3630

name: API - Pull Request
on:
pull_request:
branches:
- daily
- release/alpha
- master
paths:
- ".github/workflows/**"
- "packages/@liexp/**/src/**"
- "services/api/**"
env:
API_IMAGE_NAME: liexp-api
jobs:
install:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/install-deps
with:
hash: ${{ hashFiles('**/pnpm-lock.yaml') }}
build-packages:
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/install-deps
with:
hash: ${{ hashFiles('**/pnpm-lock.yaml') }}
- uses: ./.github/actions/build-packages
with:
hash: ${{ github.sha }}
lint:
runs-on: ubuntu-latest
needs: [install, build-packages]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/install-deps
with:
hash: ${{ hashFiles('**/pnpm-lock.yaml') }}
- uses: ./.github/actions/build-packages
with:
hash: ${{ github.sha }}
- name: Lint code
run: pnpm api lint
build:
needs: [install, build-packages]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/install-deps
with:
hash: ${{ hashFiles('**/pnpm-lock.yaml') }}
- uses: ./.github/actions/build-packages
with:
hash: ${{ github.sha }}
- uses: ./.github/actions/build-api
with:
hash: ${{ github.sha }}
test:
runs-on: ubuntu-latest
needs: [install, build-packages]
services:
pg-db-test:
image: postgres:14
env:
POSTGRES_USER: liexp
POSTGRES_PASSWORD: liexp-password
POSTGRES_DB: liexp-test
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 9432:5432
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/install-deps
with:
hash: ${{ hashFiles('**/pnpm-lock.yaml') }}
- uses: ./.github/actions/build-packages
with:
hash: ${{ github.sha }}
- uses: ./.github/actions/build-api
with:
hash: ${{ github.sha }}
- name: Run migrations
env:
DOTENV_CONFIG_PATH: .env.test
run: pnpm api migration:run
- name: Upsert NLP Entities
env:
DOTENV_CONFIG_PATH: .env.test
run: pnpm api bin:run upsert-nlp-entities
- name: Run tests
env:
DEBUG: "-@liexp*"
run: |
pnpm api test:spec
pnpm api test:e2e
docker_build:
if: ${{ github.head_ref == 'release/alpha' }}
needs: [install, build-packages, lint, build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/install-deps
with:
hash: ${{ hashFiles('**/pnpm-lock.yaml') }}
- name: Log in to registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build API image
uses: docker/build-push-action@v5
with:
context: .
file: ./api.Dockerfile
push: false
tags: ${{ env.API_IMAGE_NAME }}