diff --git a/.github/workflows/job-playwright.yml b/.github/workflows/job-playwright.yml index f8e14d23f..ec0a3fe69 100644 --- a/.github/workflows/job-playwright.yml +++ b/.github/workflows/job-playwright.yml @@ -96,7 +96,8 @@ jobs: docker tag ghcr.io/cloud-pi-native/console/server-nestjs:${{ inputs.TAG }} dso-console/server-nestjs:ci docker pull ghcr.io/cloud-pi-native/console/client:${{ inputs.TAG }} docker tag ghcr.io/cloud-pi-native/console/client:${{ inputs.TAG }} dso-console/client:ci - docker buildx build -t dso-console/opencds-mockoon:ci packages/opencds/ + docker pull ghcr.io/cloud-pi-native/console/opencds-mockoon:${{ inputs.TAG }} + docker tag ghcr.io/cloud-pi-native/console/opencds-mockoon:${{ inputs.TAG }} dso-console/opencds-mockoon:ci docker compose -f ./docker/docker-compose.ci.yml up --no-build -d --remove-orphans - name: Run Playwright tests diff --git a/apps/server-nestjs/.env.integ-example b/apps/server-nestjs/.env.integ-example index d5850a09c..df69652c8 100644 --- a/apps/server-nestjs/.env.integ-example +++ b/apps/server-nestjs/.env.integ-example @@ -85,3 +85,8 @@ EXTERNAL_PLUGINS_DIR_HOST_PATH=/path/to/plugins # HTTP_PROXY= # HTTPS_PROXY= # NO_PROXY= + +# Configuration OpenCDS +OPENCDS_URL= +OPENCDS_API_TOKEN=token +OPENCDS_API_TLS_REJECT_UNAUTHORIZED=false diff --git a/apps/server/.env.docker-example b/apps/server/.env.docker-example index 9b97b0504..a497460c1 100644 --- a/apps/server/.env.docker-example +++ b/apps/server/.env.docker-example @@ -24,3 +24,8 @@ SERVER_PORT=8080 DB_URL=postgresql://admin:admin@postgres:5432/dso-console-db?schema=public # Adresse e-mail de contact affichée dans l'interface CONTACT_EMAIL=cloudpinative-relations@interieur.gouv.fr + +# Configuration OpenCDS +OPENCDS_URL=http://dso-opencds_mockoon:3100/api/v1 +OPENCDS_API_TOKEN=token +OPENCDS_API_TLS_REJECT_UNAUTHORIZED=false diff --git a/apps/server/.env.integ-example b/apps/server/.env.integ-example index d5850a09c..df69652c8 100644 --- a/apps/server/.env.integ-example +++ b/apps/server/.env.integ-example @@ -85,3 +85,8 @@ EXTERNAL_PLUGINS_DIR_HOST_PATH=/path/to/plugins # HTTP_PROXY= # HTTPS_PROXY= # NO_PROXY= + +# Configuration OpenCDS +OPENCDS_URL= +OPENCDS_API_TOKEN=token +OPENCDS_API_TLS_REJECT_UNAUTHORIZED=false diff --git a/ci/matrix-docker.json b/ci/matrix-docker.json index 18513ce75..3550832db 100644 --- a/ci/matrix-docker.json +++ b/ci/matrix-docker.json @@ -30,5 +30,13 @@ "dockerfile": "./apps/client/Dockerfile", "target": "prod" } + }, + { + "name": "opencds-mockoon", + "build": { + "context": "./", + "dockerfile": "./packages/opencds/Dockerfile", + "target": "prod" + } } ] diff --git a/docker/docker-compose.ci.yml b/docker/docker-compose.ci.yml index acfeeed3b..28cfbdb04 100644 --- a/docker/docker-compose.ci.yml +++ b/docker/docker-compose.ci.yml @@ -129,8 +129,8 @@ services: opencds-mockoon: restart: unless-stopped build: - context: ../packages/opencds - dockerfile: Dockerfile + context: .. + dockerfile: packages/opencds/Dockerfile image: dso-console/opencds-mockoon:ci container_name: dso-opencds_mockoon user: root diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index 0be198a19..207d52709 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -219,8 +219,8 @@ services: opencds-mockoon: restart: unless-stopped build: - context: ../packages/opencds - dockerfile: Dockerfile + context: .. + dockerfile: packages/opencds/Dockerfile image: dso-console/opencds-mockoon:dev container_name: dso-opencds_mockoon user: root diff --git a/docker/docker-compose.integ.yml b/docker/docker-compose.integ.yml index 64f4da082..5b07b3cf5 100644 --- a/docker/docker-compose.integ.yml +++ b/docker/docker-compose.integ.yml @@ -196,6 +196,19 @@ services: - dso-network attach: true + opencds-mockoon: + restart: unless-stopped + build: + context: .. + dockerfile: packages/opencds/Dockerfile + image: dso-console/opencds-mockoon:dev + container_name: dso-opencds_mockoon + user: root + ports: + - 3100:3100 + networks: + - dso-network + networks: dso-network: driver: bridge diff --git a/docker/docker-compose.local.yml b/docker/docker-compose.local.yml index 6609aa9d8..f81a2b04e 100644 --- a/docker/docker-compose.local.yml +++ b/docker/docker-compose.local.yml @@ -67,8 +67,8 @@ services: opencds-mockoon: restart: unless-stopped build: - context: ../packages/opencds - dockerfile: Dockerfile + context: .. + dockerfile: packages/opencds/Dockerfile image: dso-console/opencds-mockoon:local container_name: dso-opencds_mockoon user: root diff --git a/package.json b/package.json index 6b89e4d2b..e8f02ffea 100644 --- a/package.json +++ b/package.json @@ -19,14 +19,14 @@ "dev": "docker compose -f ./docker/docker-compose.local.yml up -d --remove-orphans && echo '\nStart applications with commands:\n\n pnpm --filter @cpn-console/server run dev\n pnpm --filter @cpn-console/client run dev\n pnpm --filter @cpn-console/server-nestjs run dev\n\nMake sure you provide env variables in `.env` files.'", "dev:clean": "docker compose -f ./docker/docker-compose.local.yml down --remove-orphans", "dev:delete": "docker compose -f ./docker/docker-compose.local.yml down -v --remove-orphans", - "docker:dev": "docker compose -f ./docker/docker-compose.dev.yml up -d --remove-orphans; docker compose -f ./docker/docker-compose.dev.yml watch --no-up & docker compose -f ./docker/docker-compose.dev.yml logs server client server-nestjs nginx-strangler -f", + "docker:dev": "docker compose -f ./docker/docker-compose.dev.yml up --menu", "docker:dev:build": "export COMPOSE_FILE=./docker/docker-compose.dev.yml && ./scripts/run-build.sh $COMPOSE_FILE", "docker:dev:clean": "docker compose -f ./docker/docker-compose.dev.yml down --remove-orphans", "docker:dev:delete": "docker compose -f ./docker/docker-compose.dev.yml down -v --remove-orphans", "docker:e2e": "docker compose -f ./docker/docker-compose.dev.yml up ${TAG:+--no-build} -d --remove-orphans; pnpm playwright:test; docker compose -f ./docker/docker-compose.dev.yml down --remove-orphans", "docker:e2e-ci": "docker compose -f ./docker/docker-compose.ci.yml up ${TAG:+--no-build} -d --remove-orphans; pnpm playwright:test", "docker:e2e-ci:delete": "docker compose -f ./docker/docker-compose.ci.yml down -v --remove-orphans", - "docker:integ": "docker compose --env-file apps/server/.env.integ -f ./docker/docker-compose.integ.yml up -d; docker compose --env-file apps/server/.env.integ -f ./docker/docker-compose.integ.yml watch --no-up & docker compose --env-file apps/server/.env.integ -f ./docker/docker-compose.integ.yml logs server client server-nestjs nginx-strangler -f", + "docker:integ": "docker compose --env-file apps/server/.env.integ -f ./docker/docker-compose.integ.yml up --menu", "docker:integ:build": "export $(cat apps/server/.env.integ | grep -v '#' | xargs) && export COMPOSE_FILE=./docker/docker-compose.integ.yml && cd $(dirname $COMPOSE_FILE) && docker buildx bake --allow=fs.read=.. --file $(basename $COMPOSE_FILE) --load && cd - > /dev/null", "docker:integ:clean": "docker compose --env-file apps/server/.env.integ -f ./docker/docker-compose.integ.yml down --remove-orphans", "docker:integ:delete": "docker compose --env-file apps/server/.env.integ -f ./docker/docker-compose.integ.yml down -v --remove-orphans", diff --git a/packages/opencds/Dockerfile b/packages/opencds/Dockerfile index 85028aa97..734496c4f 100644 --- a/packages/opencds/Dockerfile +++ b/packages/opencds/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18-alpine +FROM node:24-alpine AS prod RUN npm install -g @mockoon/cli@9.3.0 @@ -8,13 +8,14 @@ RUN apk --no-cache add curl tzdata # Do not run as root. RUN adduser --shell /bin/sh --disabled-password --gecos "" mockoon -COPY ./opencds_api.json ./opencds_api.json +COPY packages/opencds/opencds_api.json ./opencds_api.json RUN chown -R mockoon ./opencds_api.json USER mockoon +HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \ + CMD wget -qO- http://127.0.0.1:3100/api/v1/health || exit 1 + EXPOSE 3100 ENTRYPOINT ["mockoon-cli","start","--disable-log-to-file","--data","./opencds_api.json","--port","3100"] - -# Usage: docker run -p :3100 mockoon-test diff --git a/packages/opencds/opencds_api.json b/packages/opencds/opencds_api.json index acca53617..6c92672f0 100644 --- a/packages/opencds/opencds_api.json +++ b/packages/opencds/opencds_api.json @@ -451,6 +451,37 @@ "responseMode": null, "streamingMode": null, "streamingInterval": 0 + }, + { + "uuid": "1055fe07-2f29-4dec-8412-2066fb330b3c", + "type": "http", + "documentation": "OpenCDS Mockoon healthcheck", + "method": "get", + "endpoint": "health", + "responses": [ + { + "uuid": "0d7f2acf-8006-4995-a5e5-39d8ba1858ef", + "body": "{\"status\":\"OK\"}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null, + "streamingMode": null, + "streamingInterval": 0 } ], "rootChildren": [ @@ -473,6 +504,10 @@ { "type": "route", "uuid": "bb61c12f-8185-43fe-9498-22b6661e998c" + }, + { + "type": "route", + "uuid": "1055fe07-2f29-4dec-8412-2066fb330b3c" } ], "proxyMode": false,