diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8dc42d15a1125baf6958a0d9942eaaab5c0dd90b..ceccbc58e26def48d6c82be8238931b5f8af7122 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,6 +13,7 @@ cache: stages: - get-data - format-data + - get-meili-key - build - deploy @@ -21,42 +22,38 @@ stages: - i=0; while [ "$i" -lt 12 ]; do docker info && break; sleep 5; i=$(( i + 1 )) ; done - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY +############# get-meili-key ############### -.build: - stage: build - image: docker:24 - # needs: - # - format-pfam +.get-meili-api-key: + image: python:3.11-bullseye + stage: get-meili-key variables: - CONTEXT: "." - DOCKERFILE: "Dockerfile" - BASE_URL: /wiki/ MEILI_HOST: "http://localhost:7700" - MEILI_API_KEY: MASTER_KEY before_script: - - *docker-login + - apt update + - pip install meilisearch script: - - > - docker buildx build --pull -t "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" - --build-arg "BASE_URL=$BASE_URL" - --build-arg "MEILI_HOST=$MEILI_HOST" - --build-arg "MEILI_API_KEY=$MEILI_API_KEY" - -f $DOCKERFILE $CONTEXT - - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" + - ./scripts/set-meili-api-key-env.py --key "${MEILI_MASTER_KEY}" --host ${MEILI_HOST} >> build.env + artifacts: + reports: + dotenv: build.env -# build: -# stage: build -# before_script: -# - npm ci -# script: -# - NUXT_APP_BASE_URL=/wiki/ npm run generate -# artifacts: -# paths: -# - .output/public -# untracked: false -# when: on_success -# expire_in: "30 days" +set-meili-env:dev: + extends: .get-meili-api-key + variables: + MEILI_HOST: 'https://defense-finder-meilisearch.dev.pasteur.cloud' + rules: + - if: $CI_COMMIT_BRANCH != "main" + +set-meili-env:prod: + extends: .get-meili-api-key + variables: + MEILI_HOST: 'https://defense-finder-meilisearch.pasteur.cloud' + rules: + - if: $CI_COMMIT_BRANCH == "main" + +############################## get-zotero: image: python:3.11-bullseye stage: get-data @@ -70,7 +67,6 @@ get-zotero: paths: - public/articles.json - get-pfam: image: ubuntu:23.04 stage: get-data @@ -105,27 +101,58 @@ format-pfam: rules: - if: $CI_COMMIT_BRANCH == "main" + +################ BUILD ########################## + +.build: + stage: build + image: docker:24 + # needs: + # - format-pfam + variables: + CONTEXT: "." + DOCKERFILE: "Dockerfile" + BASE_URL: /wiki/ + MEILI_HOST: "http://localhost:7700" + before_script: + - *docker-login + script: + - echo $MEILI_API_KEY + - > + docker buildx build --pull -t "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" + --build-arg "BASE_URL=$BASE_URL" + --build-arg "MEILI_HOST=$MEILI_HOST" + --build-arg "MEILI_API_KEY=$MEILI_API_KEY" + -f $DOCKERFILE $CONTEXT + - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" + + + build:dev:wiki: extends: .build + needs: + - set-meili-env:dev variables: BASE_URL: /wiki/ - MEILI_HOST: 'https://defense-finder-meilisearch.dev.pasteur.cloud' - MEILI_API_KEY: "${MEILI_MASTER_KEY}" + # MEILI_HOST: 'https://defense-finder-meilisearch.dev.pasteur.cloud' + # MEILI_API_KEY: "${MEILI_MASTER_KEY}" rules: - if: $CI_COMMIT_BRANCH != "main" build:prod:wiki: extends: .build + needs: + - set-meili-env:prod variables: BASE_URL: /wiki/ - MEILI_HOST: 'https://defense-finder-meilisearch.pasteur.cloud' - MEILI_API_KEY: "${MEILI_MASTER_KEY}" + # MEILI_HOST: 'https://defense-finder-meilisearch.pasteur.cloud' + # MEILI_API_KEY: "${MEILI_MASTER_KEY}" rules: - if: $CI_COMMIT_BRANCH == "main" - +################ DEPLOY ########################## .deploy: stage: deploy image: harbor.pasteur.fr/kube-system/helm-kubectl:$HELM_VERSION diff --git a/scripts/set-meili-api-key-env.py b/scripts/set-meili-api-key-env.py new file mode 100755 index 0000000000000000000000000000000000000000..79fe7c58a884e83f3ab051ce803fafb3f863dfe1 --- /dev/null +++ b/scripts/set-meili-api-key-env.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +import meilisearch +import argparse + + +parser = argparse.ArgumentParser( + prog="set-meili-api-key-env", + description="Create an env file with meili api key", +) +parser.add_argument("--key", type=str) # option that takes a value +parser.add_argument("--host", type=str) # option that takes a value +args = parser.parse_args() + +client = meilisearch.Client(args.host, args.key) +keys = client.get_keys() + +api_key = [res.key for res in keys.results if res.name == "Default Search API Key"] +if len(api_key) == 1: + print(f"MEILI_HOST={args.host}") + print(f"MEILI_API_KEY={api_key[0]}")