diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..7858851 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,23 @@ +name: Build cads-processing-api-service docker image + +on: + workflow_dispatch: + push: + branches: + - main + tags: + - "v*" + pull_request: + branches: + - main + + +jobs: + build_docker_image: + name: Build docker image + uses: ecmwf-projects/cads-build-farm/.github/workflows/docker-build.yaml@main + with: + dockerfile: 'Retrieve.Dockerfile' + chart-repo: 'ecmwf/dss-retrieve-api-chart' + package-ref: "CADS_PROCESSING_API_SERVICE_REF" + secrets: inherit diff --git a/Retrieve.Dockerfile b/Retrieve.Dockerfile new file mode 100644 index 0000000..41c89dc --- /dev/null +++ b/Retrieve.Dockerfile @@ -0,0 +1,51 @@ +FROM condaforge/miniforge3:23.11.0-0 + +ARG MODE=stable +ARG CADS_PAT + +WORKDIR /src + +COPY ./git-*-repos.py /src/ + +COPY environment.${MODE} /src/environment +COPY environment-common.yml /src/environment-common.yml +COPY . /src/cads-processing-api-service + +RUN conda install -y -n base -c conda-forge gitpython typer conda-merge + +SHELL ["/bin/bash", "-c"] + +RUN set -a && source environment \ + && CADS_PAT=${CADS_PAT} python ./git-clone-repos.py --default-branch \ + cacholote \ + cads-adaptors \ + cads-broker \ + cads-catalogue \ + cads-common \ + ogc-api-processes-fastapi + +# NOTE: no environment for cads-adaptors as we only use basic features +RUN conda run -n base conda-merge \ + /src/environment-common.yml \ + /src/cacholote/environment.yml \ + /src/cads-broker/environment.yml \ + /src/cads-catalogue/environment.yml \ + /src/cads-common/environment.yml \ + /src/cads-processing-api-service/environment.yml \ + /src/ogc-api-processes-fastapi/environment.yml \ + > /src/combined-environment.yml \ + && conda env update -n base -f /src/combined-environment.yml \ + && conda clean -afy + +RUN conda run -n base pip install --no-deps \ + -e /src/cacholote \ + -e /src/cads-broker \ + -e /src/cads-catalogue \ + -e /src/cads-common \ + -e /src/cads-processing-api-service \ + -e /src/ogc-api-processes-fastapi + +# NOTE: pip install cads-adaptors mandatory dependencies +RUN conda run -n base pip install -e /src/cads-adaptors + +CMD uvicorn cads_processing_api_service.main:app --host 0.0.0.0 --log-level info diff --git a/environment.dev b/environment.dev new file mode 100644 index 0000000..a2e55f9 --- /dev/null +++ b/environment.dev @@ -0,0 +1,7 @@ +# CADS repositories versions +CACHOLOTE_REF="main" +CADS_ADAPTORS_REF="main" +CADS_BROKER_REF="main" +CADS_CATALOGUE_REF="main" +CADS_COMMON_REF="main" +OGC_API_PROCESSES_FASTAPI_REF="main" diff --git a/environment.stable b/environment.stable new file mode 100644 index 0000000..bd4c687 --- /dev/null +++ b/environment.stable @@ -0,0 +1,7 @@ +# CADS repositories versions +CACHOLOTE_REF="v1.7.1" +CADS_ADAPTORS_REF="v1.1.36" +CADS_BROKER_REF="v1.8.4" +CADS_CATALOGUE_REF="v2.3.0" +CADS_COMMON_REF="v0.6.0" +OGC_API_PROCESSES_FASTAPI_REF="v1.0.1"