From 3bd2ecbafcfc140cb52cf3e2409bbf5debb40a67 Mon Sep 17 00:00:00 2001 From: leehk Date: Thu, 17 Apr 2025 10:05:10 +0800 Subject: [PATCH] try --- .github/workflows/template_test.yml | 7 ++++--- app/backend/Dockerfile | 30 +++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/.github/workflows/template_test.yml b/.github/workflows/template_test.yml index 7011260..30013d1 100644 --- a/.github/workflows/template_test.yml +++ b/.github/workflows/template_test.yml @@ -156,9 +156,10 @@ jobs: ENV_ARGS="" if [[ "$TEST_ENVS_JSON" != "[]" ]]; then # Convert JSON array string to individual env vars - while IFS= read -r line; do - ENV_ARGS+=" -e \"$line\"" - done <<< $(echo "$TEST_ENVS_JSON" | jq -r '.[]') + IFS=',' read -r -a env_array <<< $(echo "$TEST_ENVS_JSON" | jq -r '.[][]') + for env in "${env_array[@]}"; do + ENV_ARGS+=" -e \"$env\"" + done else # Add a dummy env var if none are provided, as required by original script logic ENV_ARGS+=" -e DUMMY_ENV_TEST_RUN_ID=${{ github.run_id }}" diff --git a/app/backend/Dockerfile b/app/backend/Dockerfile index 8de3d73..061acf8 100644 --- a/app/backend/Dockerfile +++ b/app/backend/Dockerfile @@ -1,5 +1,5 @@ # pull official base image -FROM python:3.11-slim-bullseye +FROM python:3.11-slim-bullseye AS base # create directory for the app user RUN mkdir -p /home/app @@ -16,16 +16,13 @@ WORKDIR $APP_HOME # set environment variables ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 -ENV ENVIRONMENT=prod -ENV TESTING=0 - # add app COPY . $APP_HOME # install python dependencies RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pipenv && rm -rf ~/.cache/pip -RUN pipenv install --deploy --dev +RUN pipenv install --deploy # chown all the files to the app user RUN chown -R app:app $APP_HOME @@ -33,8 +30,29 @@ RUN chown -R app:app $APP_HOME # change to the app user USER app + + +# TEST +FROM base AS test + +ENV ENVIRONMENT=dev +ENV TESTING=1 + +RUN pipenv install --deploy --dev + +# run tests +RUN pipenv run pytest tests --disable-warnings + + + +# BUILD +FROM base AS builder + +ENV ENVIRONMENT=prod +ENV TESTING=0 + # expose the port the app runs on EXPOSE 80 # run uvicorn -CMD ["pipenv", "run", "uvicorn", "main:app", "--reload", "--workers", "1", "--host", "0.0.0.0", "--port", "80"] \ No newline at end of file +CMD ["pipenv", "run", "uvicorn", "main:app", "--reload", "--workers", "1", "--host", "0.0.0.0", "--port", "80"]