image: continuumio/miniconda:latest stages: - test - build - deploy variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" REGISTRY_HOST: localhost:5000 TAG_LATEST: $REGISTRY_HOST/$CI_PROJECT_NAME/$CI_COMMIT_REF_NAME:latest TAG_COMMIT: $REGISTRY_HOST/$CI_PROJECT_NAME/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA cache: paths: - .cache/pip # This job tests if the book compiles gracefully after a new addition test-build: stage: test rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push" before_script: - python -V - conda env create -f environment.yml - conda init bash - source ~/.bashrc - conda activate jupyter-book-env script: - jupyter-book clean book/ - jupyter-book build book/ build-book: stage: build image: docker rules: - if: $CI_COMMIT_BRANCH == "publish" && $CI_PIPELINE_SOURCE == "push" before_script: - docker info script: - docker build -t $TAG_LATEST . - docker push $TAG_LATEST - docker image prune -f deploy-book: stage: deploy image: docker rules: - if: $CI_COMMIT_BRANCH == "publish" && $CI_PIPELINE_SOURCE == "push" before_script: - docker info - docker stop $CI_PROJECT_NAME || exit_code=$? - if [ $exit_code -ne 0 ]; then echo "Container $CI_PROJECT_NAME not found, cannot stop"; else docker rm $CI_PROJECT_NAME; fi script: - docker run -d --restart always -p 8000:8000 --name $CI_PROJECT_NAME $TAG_LATEST environment: name: production url: https://interactivetextbooks.citg.tudelft.nl/$CI_PROJECT_NAME