From 0732a23e74e3c76ba074a0cbf21e11003283797f Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Wed, 12 Jun 2024 20:40:47 +0000 Subject: [PATCH 01/16] Better windows support --- .gitattributes | 2 ++ .github/workflows/app-tests.yaml | 24 +++++++++++++----------- src/pyproject.toml | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..b5db8d48 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.sh text eol=lf +*.jsonlines text eol=lf \ No newline at end of file diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 3ef2409b..79925239 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -13,20 +13,22 @@ jobs: strategy: fail-fast: false matrix: - os: ["ubuntu-20.04"] + os: ["ubuntu-latest", "macos-13", "macos-latest-xlarge", "windows-latest"] python_version: ["3.10", "3.11", "3.12"] - services: - postgres: - image: pgvector/pgvector:pg16 - env: - POSTGRES_USER: admin - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - # needed because the postgres container does not provide a healthcheck - options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + exclude: + - os: macos-latest-xlarge + python_version: "3.10" steps: - uses: actions/checkout@v4 + - name: Check for MacOS Runner + if: matrix.os == 'macos-latest-xlarge' + run: brew install postgresql@14 + - name: Setup postgres + uses: ikalnytskyi/action-setup-postgres@v6 + with: + username: admin + password: postgres + database: postgres - name: Setup python uses: actions/setup-python@v5 with: diff --git a/src/pyproject.toml b/src/pyproject.toml index a4bb0de1..9ceb6c4b 100644 --- a/src/pyproject.toml +++ b/src/pyproject.toml @@ -5,7 +5,7 @@ description = "Create a relecloud demo application with fastapi and postgres-fle dependencies = [ "fastapi", "gunicorn", - "uvicorn[standard]", + "uvicorn", "python-dotenv", "environs", "azure-identity", From b9121e8438c72e35762d77c3abdbb33f8ecd13a1 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Wed, 12 Jun 2024 20:58:40 +0000 Subject: [PATCH 02/16] attempt 2 --- .github/workflows/app-tests.yaml | 3 +++ .github/workflows/install-pgvector.bat | 8 ++++++++ 2 files changed, 11 insertions(+) create mode 100644 .github/workflows/install-pgvector.bat diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 79925239..ba8ecee8 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -23,6 +23,9 @@ jobs: - name: Check for MacOS Runner if: matrix.os == 'macos-latest-xlarge' run: brew install postgresql@14 + - name: Install pgvector on Windows using install-pgvector.bat + if: matrix.os == 'windows-latest' + run: .\install-pgvector.bat - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 with: diff --git a/.github/workflows/install-pgvector.bat b/.github/workflows/install-pgvector.bat new file mode 100644 index 00000000..56134c60 --- /dev/null +++ b/.github/workflows/install-pgvector.bat @@ -0,0 +1,8 @@ +set "PGROOT=C:\Program Files\PostgreSQL\14" +cd $RUNNER_TEMP +git clone --branch v0.6.2 https://github.com/pgvector/pgvector.git +cd pgvector + +call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" +nmake /NOLOGO /F Makefile.win +nmake /NOLOGO /F Makefile.win install \ No newline at end of file From 2787a6b01b9b99549f03307e9f4eaac27e76660c Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Wed, 12 Jun 2024 21:01:57 +0000 Subject: [PATCH 03/16] hm cmd --- .github/workflows/app-tests.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index ba8ecee8..9b7981ea 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -25,6 +25,7 @@ jobs: run: brew install postgresql@14 - name: Install pgvector on Windows using install-pgvector.bat if: matrix.os == 'windows-latest' + shell: cmd run: .\install-pgvector.bat - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 From 0ce28645b560c519599bb97b926e92e8cf79f2b1 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Wed, 12 Jun 2024 21:10:50 +0000 Subject: [PATCH 04/16] Bat file location --- .github/workflows/app-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 9b7981ea..518daea7 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -26,7 +26,7 @@ jobs: - name: Install pgvector on Windows using install-pgvector.bat if: matrix.os == 'windows-latest' shell: cmd - run: .\install-pgvector.bat + run: .github\workflows\install-pgvector.bat - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 with: From d13546394c47feac5619fa23ca9e1e8301d09e25 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 00:07:26 +0000 Subject: [PATCH 05/16] Different way of pinning --- .github/workflows/app-tests.yaml | 2 +- requirements-dev.txt | 1 + src/entrypoint.sh | 1 + src/pyproject.toml | 26 ++-- src/requirements.txt | 206 +------------------------------ 5 files changed, 17 insertions(+), 219 deletions(-) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 518daea7..655aa75c 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: ["ubuntu-latest", "macos-13", "macos-latest-xlarge", "windows-latest"] + os: ["windows-latest"] python_version: ["3.10", "3.11", "3.12"] exclude: - os: macos-latest-xlarge diff --git a/requirements-dev.txt b/requirements-dev.txt index 0924b724..d1c56a4b 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,3 +2,4 @@ ruff pre-commit pip-tools +pip-compile-cross-platform \ No newline at end of file diff --git a/src/entrypoint.sh b/src/entrypoint.sh index f3c4cea8..0a743968 100644 --- a/src/entrypoint.sh +++ b/src/entrypoint.sh @@ -1,3 +1,4 @@ #!/bin/bash set -e +python3 -m pip install . python3 -m gunicorn "fastapi_app:create_app()" \ No newline at end of file diff --git a/src/pyproject.toml b/src/pyproject.toml index 9ceb6c4b..1d753fec 100644 --- a/src/pyproject.toml +++ b/src/pyproject.toml @@ -1,21 +1,19 @@ [project] name = "fastapi_app" version = "1.0.0" -description = "Create a relecloud demo application with fastapi and postgres-flexible" +description = "Create a application with fastapi and postgres-flexible" dependencies = [ - "fastapi", - "gunicorn", - "uvicorn", - "python-dotenv", - "environs", - "azure-identity", - "aiohttp", - "asyncpg", - "SQLAlchemy[asyncio]", - "pgvector", - "openai", - "tiktoken", - "openai-messages-token-helper" + "fastapi>=0.111.0,<1.0.0", + "python-dotenv>=1.0.1,<2.0.0", + "environs>=11.0.0,<12.0.0", + "azure-identity>=1.16.1,<2.0.0", + "aiohttp>=3.9.5,<4.0.0", + "asyncpg>=0.29.0,<1.0.0", + "SQLAlchemy[asyncio]>=2.0.30,<3.0.0", + "pgvector>=0.2.5,<0.3.0", + "openai>=1.34.0,<2.0.0", + "tiktoken>=0.7.0,<0.8.0", + "openai-messages-token-helper>=0.1.5,<0.2.0", ] [build-system] diff --git a/src/requirements.txt b/src/requirements.txt index 854d69d9..cf57fdaa 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,204 +1,2 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --output-file=requirements.txt pyproject.toml -# -aiohttp==3.9.5 - # via fastapi_app (pyproject.toml) -aiosignal==1.3.1 - # via aiohttp -annotated-types==0.7.0 - # via pydantic -anyio==4.4.0 - # via - # httpx - # openai - # starlette - # watchfiles -async-timeout==4.0.3 - # via asyncpg -asyncpg==0.29.0 - # via fastapi_app (pyproject.toml) -attrs==23.2.0 - # via aiohttp -azure-core==1.30.1 - # via azure-identity -azure-identity==1.16.0 - # via fastapi_app (pyproject.toml) -certifi==2024.2.2 - # via - # httpcore - # httpx - # requests -cffi==1.16.0 - # via cryptography -charset-normalizer==3.3.2 - # via requests -click==8.1.7 - # via - # typer - # uvicorn -cryptography==42.0.7 - # via - # azure-identity - # msal - # pyjwt -distro==1.9.0 - # via openai -dnspython==2.6.1 - # via email-validator -email-validator==2.1.1 - # via fastapi -environs==11.0.0 - # via fastapi_app (pyproject.toml) -fastapi==0.111.0 - # via fastapi_app (pyproject.toml) -fastapi-cli==0.0.4 - # via fastapi -frozenlist==1.4.1 - # via - # aiohttp - # aiosignal -greenlet==3.0.3 - # via sqlalchemy -gunicorn==22.0.0 - # via fastapi_app (pyproject.toml) -h11==0.14.0 - # via - # httpcore - # uvicorn -httpcore==1.0.5 - # via httpx -httptools==0.6.1 - # via uvicorn -httpx==0.27.0 - # via - # fastapi - # openai -idna==3.7 - # via - # anyio - # email-validator - # httpx - # requests - # yarl -jinja2==3.1.4 - # via fastapi -markdown-it-py==3.0.0 - # via rich -markupsafe==2.1.5 - # via jinja2 -marshmallow==3.21.2 - # via environs -mdurl==0.1.2 - # via markdown-it-py -msal==1.28.0 - # via - # azure-identity - # msal-extensions -msal-extensions==1.1.0 - # via azure-identity -multidict==6.0.5 - # via - # aiohttp - # yarl -numpy==1.26.4 - # via pgvector -openai==1.31.0 - # via - # fastapi_app (pyproject.toml) - # openai-messages-token-helper -openai-messages-token-helper==0.1.4 - # via fastapi_app (pyproject.toml) -orjson==3.10.3 - # via fastapi -packaging==24.0 - # via - # gunicorn - # marshmallow - # msal-extensions -pgvector==0.2.5 - # via fastapi_app (pyproject.toml) -pillow==10.3.0 - # via openai-messages-token-helper -portalocker==2.8.2 - # via msal-extensions -pycparser==2.22 - # via cffi -pydantic==2.7.2 - # via - # fastapi - # openai -pydantic-core==2.18.3 - # via pydantic -pygments==2.18.0 - # via rich -pyjwt[crypto]==2.8.0 - # via - # msal - # pyjwt -python-dotenv==1.0.1 - # via - # environs - # fastapi_app (pyproject.toml) - # uvicorn -python-multipart==0.0.9 - # via fastapi -pyyaml==6.0.1 - # via uvicorn -regex==2024.5.15 - # via tiktoken -requests==2.32.3 - # via - # azure-core - # msal - # tiktoken -rich==13.7.1 - # via typer -shellingham==1.5.4 - # via typer -six==1.16.0 - # via azure-core -sniffio==1.3.1 - # via - # anyio - # httpx - # openai -sqlalchemy[asyncio]==2.0.30 - # via fastapi_app (pyproject.toml) -starlette==0.37.2 - # via fastapi -tiktoken==0.7.0 - # via - # fastapi_app (pyproject.toml) - # openai-messages-token-helper -tqdm==4.66.4 - # via openai -typer==0.12.3 - # via fastapi-cli -typing-extensions==4.12.0 - # via - # azure-core - # fastapi - # openai - # pydantic - # pydantic-core - # sqlalchemy - # typer -ujson==5.10.0 - # via fastapi -urllib3==2.2.1 - # via requests -uvicorn[standard]==0.30.0 - # via - # fastapi - # fastapi_app (pyproject.toml) -uvloop==0.19.0 - # via uvicorn -watchfiles==0.22.0 - # via uvicorn -websockets==12.0 - # via uvicorn -yarl==1.9.4 - # via aiohttp +gunicorn>=22.0.0,<23.0.0 +uvicorn>=0.30.1,<1.0.0 \ No newline at end of file From 4863a439fc222decfb98de65b74066d1cc4369fb Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:06:17 +0000 Subject: [PATCH 06/16] Add more OSes --- .github/workflows/app-tests.yaml | 5 ++++- .github/workflows/install-pgvector.sh | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/install-pgvector.sh diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 655aa75c..28e1882c 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: ["windows-latest"] + os: ["ubuntu-latest", "windows-latest", "macos-latest-xlarge", "macos-13"] python_version: ["3.10", "3.11", "3.12"] exclude: - os: macos-latest-xlarge @@ -27,6 +27,9 @@ jobs: if: matrix.os == 'windows-latest' shell: cmd run: .github\workflows\install-pgvector.bat + - name: Install pgvector on MacOS/Linux using install-pgvector.sh + if: matrix.os != 'windows-latest' + run: .github/workflows/install-pgvector.sh - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 with: diff --git a/.github/workflows/install-pgvector.sh b/.github/workflows/install-pgvector.sh new file mode 100644 index 00000000..5f9aae4c --- /dev/null +++ b/.github/workflows/install-pgvector.sh @@ -0,0 +1,5 @@ +cd /tmp +git clone --branch v0.7.2 https://github.com/pgvector/pgvector.git +cd pgvector +make +make install # may need sudo \ No newline at end of file From 62ef4ae9baaf72c9395aaf65dc75ce6f0f116d51 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:08:11 +0000 Subject: [PATCH 07/16] Add more OSes --- .github/workflows/app-tests.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .github/workflows/app-tests.yaml diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml old mode 100644 new mode 100755 From d8947c6195d9cff091f15eed39f0f0dadd77780c Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:11:46 +0000 Subject: [PATCH 08/16] Fix chmod --- .github/workflows/install-pgvector.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .github/workflows/install-pgvector.sh diff --git a/.github/workflows/install-pgvector.sh b/.github/workflows/install-pgvector.sh old mode 100644 new mode 100755 From 516b830472c1056abaf71244a65c759ce43d42bf Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:11:49 +0000 Subject: [PATCH 09/16] Fix chmod --- .github/workflows/app-tests.yaml | 1 + .github/workflows/install-pgvector.sh | 0 2 files changed, 1 insertion(+) mode change 100755 => 100644 .github/workflows/install-pgvector.sh diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 28e1882c..8a6ed88a 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -29,6 +29,7 @@ jobs: run: .github\workflows\install-pgvector.bat - name: Install pgvector on MacOS/Linux using install-pgvector.sh if: matrix.os != 'windows-latest' + shell: bash run: .github/workflows/install-pgvector.sh - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 diff --git a/.github/workflows/install-pgvector.sh b/.github/workflows/install-pgvector.sh old mode 100755 new mode 100644 From 0a4143b749e6927b40c7590d007c8bd28f5461de Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:13:55 +0000 Subject: [PATCH 10/16] Chmod again --- .github/workflows/app-tests.yaml | 1 - .github/workflows/install-pgvector.sh | 0 2 files changed, 1 deletion(-) mode change 100644 => 100755 .github/workflows/install-pgvector.sh diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 8a6ed88a..28e1882c 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -29,7 +29,6 @@ jobs: run: .github\workflows\install-pgvector.bat - name: Install pgvector on MacOS/Linux using install-pgvector.sh if: matrix.os != 'windows-latest' - shell: bash run: .github/workflows/install-pgvector.sh - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 diff --git a/.github/workflows/install-pgvector.sh b/.github/workflows/install-pgvector.sh old mode 100644 new mode 100755 From 52d70b02129c48cda1ce7fc48fc6596e7832b5c3 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:15:51 +0000 Subject: [PATCH 11/16] Ubuntu workaround --- .github/workflows/app-tests.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 28e1882c..cd4a3d1c 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -27,6 +27,9 @@ jobs: if: matrix.os == 'windows-latest' shell: cmd run: .github\workflows\install-pgvector.bat + - name: Install PostgreSQL development libraries + if: matrix.os == 'ubuntu-latest' + run: sudo apt install postgresql-server-dev-16 - name: Install pgvector on MacOS/Linux using install-pgvector.sh if: matrix.os != 'windows-latest' run: .github/workflows/install-pgvector.sh From 2fd13b5ab95e61cb68d945bcd37ff6a8c29f8e28 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:17:01 +0000 Subject: [PATCH 12/16] Apt update --- .github/workflows/app-tests.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index cd4a3d1c..1a4f0b1a 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -29,7 +29,9 @@ jobs: run: .github\workflows\install-pgvector.bat - name: Install PostgreSQL development libraries if: matrix.os == 'ubuntu-latest' - run: sudo apt install postgresql-server-dev-16 + run: | + sudo apt update + sudo apt install postgresql-server-dev-16 - name: Install pgvector on MacOS/Linux using install-pgvector.sh if: matrix.os != 'windows-latest' run: .github/workflows/install-pgvector.sh From aba7116f8536a53db3a8e38ff2d7bd329326a1ca Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:50:34 +0000 Subject: [PATCH 13/16] Apt update --- .github/workflows/app-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 1a4f0b1a..a48594c3 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -31,7 +31,7 @@ jobs: if: matrix.os == 'ubuntu-latest' run: | sudo apt update - sudo apt install postgresql-server-dev-16 + sudo apt install postgresql-server-dev-14 - name: Install pgvector on MacOS/Linux using install-pgvector.sh if: matrix.os != 'windows-latest' run: .github/workflows/install-pgvector.sh From 38d126c52ba09d5e3d8a9fdf73c68f0f1092e988 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:51:52 +0000 Subject: [PATCH 14/16] Apt update --- .github/workflows/install-pgvector.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/install-pgvector.sh b/.github/workflows/install-pgvector.sh index 5f9aae4c..387f56b8 100755 --- a/.github/workflows/install-pgvector.sh +++ b/.github/workflows/install-pgvector.sh @@ -2,4 +2,4 @@ cd /tmp git clone --branch v0.7.2 https://github.com/pgvector/pgvector.git cd pgvector make -make install # may need sudo \ No newline at end of file +sudo make install # may need sudo \ No newline at end of file From b1b6f2d536c605c234dbe9702301df0634d9410a Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 04:09:52 +0000 Subject: [PATCH 15/16] Apt update --- .github/workflows/app-tests.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index a48594c3..24faf3df 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -32,15 +32,15 @@ jobs: run: | sudo apt update sudo apt install postgresql-server-dev-14 - - name: Install pgvector on MacOS/Linux using install-pgvector.sh - if: matrix.os != 'windows-latest' - run: .github/workflows/install-pgvector.sh - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 with: username: admin password: postgres database: postgres + - name: Install pgvector on MacOS/Linux using install-pgvector.sh + if: matrix.os != 'windows-latest' + run: .github/workflows/install-pgvector.sh - name: Setup python uses: actions/setup-python@v5 with: From e186a3d0b3ed1a3d3f8424dde3763225b17fe6aa Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 04:18:30 +0000 Subject: [PATCH 16/16] Apt update --- .github/workflows/app-tests.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 24faf3df..af4a2d37 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -57,3 +57,12 @@ jobs: cp .env.sample .env python ./src/fastapi_app/setup_postgres_database.py python ./src/fastapi_app/setup_postgres_seeddata.py + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: 18 + - name: Build frontend + run: | + cd ./src/frontend + npm install + npm run build \ No newline at end of file