chore: bump node to latest LTS #7598
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: | |
paths-ignore: | |
- 'deployment/**' | |
- 'docker/**' | |
- 'apps/docs/**' | |
pull_request: | |
branches: [main] | |
paths-ignore: | |
- 'deployment/**' | |
- 'docker/**' | |
- 'apps/docs/**' | |
permissions: | |
contents: read | |
env: | |
DB_TEST_SYSTEM_DATABASE: it24_system_test | |
DB_TEST_SYSTEM_USERNAME: it24 | |
DB_TEST_SYSTEM_PASSWORD: Intake24! | |
DB_TEST_FOODS_DATABASE: it24_foods_test | |
DB_TEST_FOODS_USERNAME: it24 | |
DB_TEST_FOODS_PASSWORD: Intake24! | |
jobs: | |
lint: | |
name: Lint code | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [22.x] | |
steps: | |
- name: Repository checkout | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v3 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install | |
- name: Lint | |
run: pnpm lint | |
# API | |
api-postgres: | |
name: API (Node.js ${{ matrix.node-version }}, Postgres ${{ matrix.postgres-version }}, Redis ${{ matrix.redis-version }}) | |
runs-on: ubuntu-latest | |
needs: lint | |
env: | |
DB_TEST_SYSTEM_DRIVER: postgres | |
DB_TEST_SYSTEM_HOST: localhost | |
DB_TEST_SYSTEM_PORT: 5432 | |
DB_TEST_FOODS_DRIVER: postgres | |
DB_TEST_FOODS_HOST: localhost | |
DB_TEST_FOODS_PORT: 5432 | |
strategy: | |
matrix: | |
node-version: [22.x] | |
postgres-version: [15] | |
redis-version: [7] | |
services: | |
postgres: | |
image: postgres:${{ matrix.postgres-version }} | |
env: | |
POSTGRES_USER: it24 | |
POSTGRES_PASSWORD: Intake24! | |
POSTGRES_DB: it24 | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
- 5432:5432 | |
redis: | |
image: redis:${{ matrix.redis-version }} | |
options: >- | |
--health-cmd "redis-cli ping" | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
- 6379:6379 | |
steps: | |
- name: Repository checkout | |
uses: actions/checkout@v4 | |
- name: Create foods/system databases | |
run: | | |
PGPASSWORD=${{ env.DB_TEST_FOODS_PASSWORD }} psql -h ${{ env.DB_TEST_FOODS_HOST }} -p 5432 -U ${{ env.DB_TEST_FOODS_USERNAME }} -c 'CREATE DATABASE ${{ env.DB_TEST_FOODS_DATABASE }};' | |
PGPASSWORD=${{ env.DB_TEST_SYSTEM_PASSWORD }} psql -h ${{ env.DB_TEST_SYSTEM_HOST }} -p 5432 -U ${{ env.DB_TEST_SYSTEM_USERNAME }} -c 'CREATE DATABASE ${{ env.DB_TEST_SYSTEM_DATABASE }};' | |
- name: Install pnpm | |
uses: pnpm/action-setup@v3 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install | |
- name: API - use Github test environment file to build the workers with | |
working-directory: apps/api | |
run: cp __tests__/.env-test-gh .env | |
- name: API - build for tests | |
working-directory: apps/api | |
run: pnpm test:build | |
- name: API - use Github test environment file | |
working-directory: apps/api | |
run: cp ./__tests__/.env-test-gh ./__tests__/.env-test | |
- name: Repo - unit tests | |
run: pnpm test:unit | |
- name: API - integration tests | |
working-directory: apps/api | |
run: pnpm test:integration | |
# api-mariadb: | |
# name: API (Node.js ${{ matrix.node-version }}, MariaDB ${{ matrix.mariadb-version }}, Redis ${{ matrix.redis-version }}) | |
# runs-on: ubuntu-latest | |
# needs: lint | |
# env: | |
# DB_TEST_SYSTEM_DRIVER: mariadb | |
# DB_TEST_SYSTEM_HOST: 127.0.0.1 | |
# DB_TEST_SYSTEM_PORT: 3306 | |
# DB_TEST_FOODS_DRIVER: mariadb | |
# DB_TEST_FOODS_HOST: 127.0.0.1 | |
# DB_TEST_FOODS_PORT: 3306 | |
# strategy: | |
# matrix: | |
# node-version: [22.x] | |
# mariadb-version: [10] | |
# redis-version: [7] | |
# services: | |
# mariadb: | |
# image: mariadb:${{ matrix.mariadb-version }} | |
# env: | |
# MYSQL_USER: it24 | |
# MYSQL_PASSWORD: Intake24! | |
# MYSQL_DATABASE: it24 | |
# MYSQL_ROOT_PASSWORD: Intake24! | |
# options: >- | |
# --health-cmd "mysqladmin ping" | |
# --health-interval 10s | |
# --health-timeout 5s | |
# --health-retries 5 | |
# ports: | |
# - 3306:3306 | |
# redis: | |
# image: redis:${{ matrix.redis-version }} | |
# options: >- | |
# --health-cmd "redis-cli ping" | |
# --health-interval 10s | |
# --health-timeout 5s | |
# --health-retries 5 | |
# ports: | |
# - 6379:6379 | |
# steps: | |
# - name: Repository checkout | |
# uses: actions/checkout@v4 | |
# - name: Create foods/system databases | |
# run: | | |
# mysql --host 127.0.0.1 --port 3306 -uroot -pIntake24! -e "CREATE DATABASE ${{ env.DB_TEST_FOODS_DATABASE }} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" | |
# mysql --host 127.0.0.1 --port 3306 -uroot -pIntake24! -e "CREATE DATABASE ${{ env.DB_TEST_SYSTEM_DATABASE }} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" | |
# mysql --host 127.0.0.1 --port 3306 -uroot -pIntake24! -e "GRANT ALL ON *.* TO 'it24'@'%' with grant option; FLUSH PRIVILEGES;" | |
# - name: Install pnpm | |
# uses: pnpm/action-setup@v3 | |
# - name: Use Node.js ${{ matrix.node-version }} | |
# uses: actions/setup-node@v3.4.1 | |
# with: | |
# node-version: ${{ matrix.node-version }} | |
# cache: 'pnpm' | |
# - name: Install dependencies | |
# run: pnpm install | |
# - name: API - build | |
# working-directory: apps/api | |
# run: pnpm build | |
# - name: API - use Github test environment file | |
# working-directory: apps/api | |
# run: cp ./__tests__/.env-test-gh ./__tests__/.env-test | |
# - name: Repo - unit tests | |
# run: pnpm test:unit | |
# - name: Repo - integration tests | |
# run: pnpm test:integration | |
# api-mssql: | |
# name: API (Node.js ${{ matrix.node-version }}, MSSQL ${{ matrix.mssql-version }}, Redis ${{ matrix.redis-version }}) | |
# runs-on: ubuntu-latest | |
# needs: lint | |
# env: | |
# DB_TEST_SYSTEM_DRIVER: mssql | |
# DB_TEST_SYSTEM_HOST: localhost | |
# DB_TEST_SYSTEM_PORT: 1433 | |
# DB_TEST_FOODS_DRIVER: mssql | |
# DB_TEST_FOODS_HOST: localhost | |
# DB_TEST_FOODS_PORT: 1433 | |
# strategy: | |
# matrix: | |
# node-version: [22.x] | |
# mssql-version: [2019] | |
# redis-version: [7] | |
# services: | |
# mssql: | |
# image: mcr.microsoft.com/mssql/server:${{ matrix.mssql-version }}-latest | |
# env: | |
# ACCEPT_EULA: Y | |
# SA_PASSWORD: Intake24! | |
# ports: | |
# - 1433:1433 | |
# options: >- | |
# --health-cmd="/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P \"Intake24!\" -l 30 -Q \"SELECT 1\"" | |
# --health-start-period 10s | |
# --health-interval 10s | |
# --health-timeout 5s | |
# --health-retries 5 | |
# redis: | |
# image: redis:${{ matrix.redis-version }} | |
# options: >- | |
# --health-cmd "redis-cli ping" | |
# --health-interval 10s | |
# --health-timeout 5s | |
# --health-retries 5 | |
# ports: | |
# - 6379:6379 | |
# steps: | |
# - name: Repository checkout | |
# uses: actions/checkout@v4 | |
# - name: Create foods/system databases | |
# run: | | |
# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Intake24!" -Q "CREATE DATABASE ${{ env.DB_TEST_FOODS_DATABASE }}; ALTER DATABASE ${{ env.DB_TEST_FOODS_DATABASE }} SET READ_COMMITTED_SNAPSHOT ON;" | |
# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Intake24!" -Q "CREATE DATABASE ${{ env.DB_TEST_SYSTEM_DATABASE }}; ALTER DATABASE ${{ env.DB_TEST_SYSTEM_DATABASE }} SET READ_COMMITTED_SNAPSHOT ON;" | |
# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Intake24!" -Q "CREATE LOGIN ${{ env.DB_TEST_SYSTEM_USERNAME }} WITH PASSWORD = '${{ env.DB_TEST_SYSTEM_PASSWORD }}';" | |
# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Intake24!" -Q "USE ${{ env.DB_TEST_SYSTEM_DATABASE }}; CREATE USER ${{ env.DB_TEST_SYSTEM_USERNAME }} FOR LOGIN ${{ env.DB_TEST_SYSTEM_USERNAME }};" | |
# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Intake24!" -Q "USE ${{ env.DB_TEST_SYSTEM_DATABASE }}; EXEC sp_addrolemember N'db_owner', N'${{ env.DB_TEST_SYSTEM_USERNAME }}';" | |
# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Intake24!" -Q "USE ${{ env.DB_TEST_FOODS_DATABASE }}; CREATE USER ${{ env.DB_TEST_FOODS_USERNAME }} FOR LOGIN ${{ env.DB_TEST_FOODS_USERNAME }};" | |
# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Intake24!" -Q "USE ${{ env.DB_TEST_FOODS_DATABASE }}; EXEC sp_addrolemember N'db_owner', N'${{ env.DB_TEST_FOODS_USERNAME }}';" | |
# - name: Install pnpm | |
# uses: pnpm/action-setup@v3 | |
# - name: Use Node.js ${{ matrix.node-version }} | |
# uses: actions/setup-node@v3.4.1 | |
# with: | |
# node-version: ${{ matrix.node-version }} | |
# cache: 'pnpm' | |
# - name: Install dependencies | |
# run: pnpm install | |
# - name: API - build | |
# working-directory: apps/api | |
# run: pnpm build | |
# - name: API - use Github test environment file | |
# working-directory: apps/api | |
# run: cp ./__tests__/.env-test-gh ./__tests__/.env-test | |
# - name: Repo - unit tests | |
# run: pnpm test:unit | |
# - name: Repo - integration tests | |
# run: pnpm test:integration | |
# Admin client | |
admin: | |
name: Admin client (Node.js ${{ matrix.node-version }}) | |
runs-on: ubuntu-latest | |
needs: lint | |
strategy: | |
matrix: | |
node-version: [22.x] | |
steps: | |
- name: Repository checkout | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v3 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install | |
- name: Admin client - build | |
working-directory: apps/admin | |
run: pnpm build | |
# Survey client | |
survey: | |
name: Survey client (Node.js ${{ matrix.node-version }}) | |
runs-on: ubuntu-latest | |
needs: lint | |
strategy: | |
matrix: | |
node-version: [22.x] | |
steps: | |
- name: Repository checkout | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v3 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install | |
# - name: Survey client - type check | |
# working-directory: apps/survey | |
# run: pnpm type-check | |
- name: Survey client - build | |
working-directory: apps/survey | |
run: pnpm build | |
# Portal | |
portal: | |
name: Portal (Node.js ${{ matrix.node-version }}) | |
runs-on: ubuntu-latest | |
needs: lint | |
strategy: | |
matrix: | |
node-version: [22.x] | |
steps: | |
- name: Repository checkout | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v3 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install | |
- name: Portal - build | |
working-directory: apps/portal | |
run: pnpm build | |
- name: Portal - use Github test environment file | |
working-directory: apps/portal | |
run: cp ./__tests__/.env-test-gh ./__tests__/.env-test | |
- name: Portal - integration tests | |
working-directory: apps/portal | |
run: pnpm test:integration | |
# CLI | |
cli: | |
name: CLI (Node.js ${{ matrix.node-version }}) | |
runs-on: ubuntu-latest | |
needs: lint | |
strategy: | |
matrix: | |
node-version: [22.x] | |
steps: | |
- name: Repository checkout | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v3 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install | |
- name: CLI - build | |
working-directory: apps/cli | |
run: pnpm build |