Skip to content
This repository was archived by the owner on May 31, 2026. It is now read-only.

chore(deps): lock file maintenance #587

chore(deps): lock file maintenance

chore(deps): lock file maintenance #587

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# Backend jobs
backend-lint:
name: Backend Linting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Install uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
with:
version: latest
enable-cache: true
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: "3.14"
- name: Install dependencies
working-directory: ./backend
run: uv sync
- name: Run ruff check
working-directory: ./backend
run: uv run ruff check .
- name: Run ruff format check
working-directory: ./backend
run: uv run ruff format --check .
backend-test:
name: Backend Tests
runs-on: ubuntu-latest
services:
postgres:
image: postgres:18@sha256:52e6ffd11fddd081ae63880b635b2a61c14008c17fc98cdc7ce5472265516dd0
env:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: test_db
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Install uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
with:
version: latest
enable-cache: true
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: "3.14"
- name: Install dependencies
working-directory: ./backend
run: uv sync
- name: Run tests
working-directory: ./backend
env:
DATABASE_URL: postgresql+psycopg://postgres:postgres@localhost:5432/test_db
run: uv run pytest -v --cov=app --cov-report=xml
backend-migrations:
name: Backend Migrations Check
runs-on: ubuntu-latest
services:
postgres:
image: postgres:18@sha256:52e6ffd11fddd081ae63880b635b2a61c14008c17fc98cdc7ce5472265516dd0
env:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: test_db
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Install uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
with:
version: latest
enable-cache: true
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: "3.14"
- name: Install dependencies
working-directory: ./backend
run: uv sync
- name: Check migrations
working-directory: ./backend
env:
DATABASE_URL: postgresql+psycopg://postgres:postgres@localhost:5432/test_db
run: uv run litestar database upgrade --no-prompt
# Admin Portal jobs
admin-portal-lint:
name: Admin Portal Linting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5
with:
version: "10"
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: "24"
cache: pnpm
cache-dependency-path: admin_portal/pnpm-lock.yaml
- name: Install dependencies
working-directory: ./admin_portal
run: pnpm install --frozen-lockfile
- name: Run Biome lint
working-directory: ./admin_portal
run: pnpm run lint:ci
- name: Run Prettier check
working-directory: ./admin_portal
run: pnpm run format:check
# admin-portal-test:
# name: Admin Portal Tests
# runs-on: ubuntu-latest
# services:
# postgres:
# image: postgres:18@sha256:5773fe724c49c42a7a9ca70202e11e1dff21fb7235b335a73f39297d200b73a2
# env:
# POSTGRES_PASSWORD: postgres
# POSTGRES_DB: test_db
# options: >-
# --health-cmd pg_isready
# --health-interval 10s
# --health-timeout 5s
# --health-retries 5
# ports:
# - 5432:5432
# steps:
# - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
# - name: Install uv
# uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7
# with:
# version: latest
# enable-cache: true
# - name: Set up Python
# uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
# with:
# python-version: "3.13"
# - name: Install dependencies
# working-directory: ./backend
# run: uv sync
# - name: Upgrade database
# working-directory: ./backend
# env:
# DATABASE_URL: postgresql+psycopg://postgres:postgres@localhost:5432/test_db
# run: uv run litestar database upgrade --no-prompt
# - name: Start backend server
# working-directory: ./backend
# env:
# DATABASE_URL: postgresql+psycopg://postgres:postgres@localhost:5432/test_db
# PUBLIC_BASE_URL: http://127.0.0.1:8000
# ADMIN_BASE_URL: http://127.0.0.1:3002
# FRONTEND_BASE_URL: http://127.0.0.1:4321
# run: uv run litestar run --host 127.0.0.1 --port 8000 > /tmp/backend.log 2>&1 &
# - name: Wait for backend
# run: |
# for i in $(seq 1 30); do
# if curl -sf http://127.0.0.1:8000/api/v1/health > /dev/null 2>&1; then
# echo "Backend is ready"
# break
# fi
# echo "Waiting for backend... attempt $i"
# sleep 2
# done
# curl -sf http://127.0.0.1:8000/api/v1/health || (echo "Backend failed to start"; cat /tmp/backend.log; exit 1)
# - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4
# with:
# version: "10"
# - name: Setup Node.js
# uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
# with:
# node-version: "24"
# cache: pnpm
# cache-dependency-path: admin_portal/pnpm-lock.yaml
# - name: Install dependencies
# working-directory: ./admin_portal
# run: pnpm install --frozen-lockfile
# - name: Build admin portal
# working-directory: ./admin_portal
# env:
# VITE_API_BASE_URL: http://127.0.0.1:8000
# run: pnpm run build
# # - name: Start admin portal server
# # working-directory: ./admin_portal
# # run: npx http-server dist -p 3002 -s > /tmp/admin_portal.log 2>&1 &
# # - name: Wait for admin portal
# # run: |
# # for i in $(seq 1 30); do
# # if curl -sf http://127.0.0.1:3002/ > /dev/null 2>&1; then
# # echo "Admin portal is ready"
# # break
# # fi
# # echo "Waiting for admin portal... attempt $i"
# # sleep 2
# # done
# # curl -sf http://127.0.0.1:3002/ || (echo "Admin portal failed to start"; cat /tmp/admin_portal.log; exit 1)
# - name: Install Playwright browsers
# working-directory: ./admin_portal
# run: pnpm exec playwright install --with-deps
# - name: Run tests
# working-directory: ./admin_portal
# env:
# DATABASE_URL: postgresql+psycopg://postgres:postgres@localhost:5432/test_db
# VITE_API_BASE_URL: http://127.0.0.1:8000
# run: pnpm run test
admin-portal-build:
name: Admin Portal Build
runs-on: ubuntu-latest
needs: admin-portal-lint
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5
with:
version: "10"
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: "24"
cache: pnpm
cache-dependency-path: admin_portal/pnpm-lock.yaml
- name: Install dependencies
working-directory: ./admin_portal
run: pnpm install --frozen-lockfile
- name: Build
working-directory: ./admin_portal
run: pnpm run build
# Frontend jobs
frontend-lint:
name: Frontend Linting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5
with:
version: "10"
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: "24"
cache: pnpm
cache-dependency-path: frontend/pnpm-lock.yaml
- name: Install dependencies
working-directory: ./frontend
run: pnpm install --frozen-lockfile
- name: Run Biome lint
working-directory: ./frontend
run: pnpm run lint:ci
- name: Run Prettier check
working-directory: ./frontend
run: pnpm run format:check
- name: Run Astro check
working-directory: ./frontend
run: pnpm run check
# frontend-test:
# name: Frontend Tests
# runs-on: ubuntu-latest
# services:
# postgres:
# image: postgres:18@sha256:5773fe724c49c42a7a9ca70202e11e1dff21fb7235b335a73f39297d200b73a2
# env:
# POSTGRES_PASSWORD: postgres
# POSTGRES_DB: test_db
# options: >-
# --health-cmd pg_isready
# --health-interval 10s
# --health-timeout 5s
# --health-retries 5
# ports:
# - 5432:5432
# steps:
# - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
# - name: Install uv
# uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7
# with:
# version: latest
# enable-cache: true
# - name: Set up Python
# uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
# with:
# python-version: "3.13"
# - name: Install dependencies
# working-directory: ./backend
# run: uv sync
# - name: Upgrade database
# working-directory: ./backend
# env:
# DATABASE_URL: postgresql+psycopg://postgres:postgres@localhost:5432/test_db
# run: uv run litestar database upgrade --no-prompt
# - name: Start backend server
# working-directory: ./backend
# env:
# DATABASE_URL: postgresql+psycopg://postgres:postgres@localhost:5432/test_db
# PUBLIC_BASE_URL: http://127.0.0.1:8000
# ADMIN_BASE_URL: http://127.0.0.1:3002
# FRONTEND_BASE_URL: http://127.0.0.1:4321
# run: uv run litestar run --host 127.0.0.1 --port 8000 > /tmp/backend.log 2>&1 &
# - name: Wait for backend
# run: |
# for i in $(seq 1 30); do
# if curl -sf http://127.0.0.1:8000/api/v1/health > /dev/null 2>&1; then
# echo "Backend is ready"
# break
# fi
# echo "Waiting for backend... attempt $i"
# sleep 2
# done
# curl -sf http://127.0.0.1:8000/api/v1/health || (echo "Backend failed to start"; cat /tmp/backend.log; exit 1)
# - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4
# with:
# version: "10"
# - name: Setup Node.js
# uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
# with:
# node-version: "24"
# cache: pnpm
# cache-dependency-path: frontend/pnpm-lock.yaml
# - name: Install frontend dependencies
# working-directory: ./frontend
# run: pnpm install --frozen-lockfile
# - name: Build frontend
# working-directory: ./frontend
# env:
# PUBLIC_BASE_URL: http://127.0.0.1:8000
# run: pnpm run build
# # - name: Start frontend server
# # working-directory: ./frontend
# # run: node ./dist/server/entry.mjs > /tmp/frontend.log 2>&1 &
# # env:
# # HOST: 127.0.0.1
# # PORT: 4321
# # - name: Wait for frontend
# # run: |
# # for i in $(seq 1 30); do
# # if curl -sf http://127.0.0.1:4321/ > /dev/null 2>&1; then
# # echo "Frontend is ready"
# # break
# # fi
# # echo "Waiting for frontend... attempt $i"
# # sleep 2
# # done
# # curl -sf http://127.0.0.1:4321/ || (echo "Frontend failed to start"; cat /tmp/frontend.log; exit 1)
# - name: Install Playwright browsers
# working-directory: ./frontend
# run: pnpm exec playwright install --with-deps
# - name: Run e2e tests
# working-directory: ./frontend
# env:
# CI: true
# DATABASE_URL: postgresql+psycopg://postgres:postgres@localhost:5432/test_db
# PUBLIC_BASE_URL: http://127.0.0.1:8000
# PLAYWRIGHT_BASE_URL: http://127.0.0.1:4321
# run: pnpm run test:e2e
frontend-build:
name: Frontend Build
runs-on: ubuntu-latest
needs: frontend-lint
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5
with:
version: "10"
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: "24"
cache: pnpm
cache-dependency-path: frontend/pnpm-lock.yaml
- name: Install dependencies
working-directory: ./frontend
run: pnpm install --frozen-lockfile
- name: Build
working-directory: ./frontend
run: pnpm run build