variables: CONTAINER_REGISTRY: collaborating.tuhh.de:5005 CONTAINER_TEST_IMAGE: ${CONTAINER_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_SLUG} CONTAINER_RELEASE_IMAGE: ${CONTAINER_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:latest BASE_IMAGE: ${CONTAINER_REGISTRY}/itbh/hopon/hopon-docker DOCKER_FILE_PATH: . .before_script_template: before_script: &before_script_definition - cp ./docker/docker-compose.reviews ./docker/docker-compose.yml - docker-compose -p ${CI_PROJECT_PATH_SLUG}-${CI_ENVIRONMENT_SLUG} -f ./docker/docker-compose.yml config - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CONTAINER_REGISTRY} - docker pull ${BASE_IMAGE} .before_script_pages_template: before_script: &before_script_pages_definition stages: - tests - clone - pdf - pages - review - deploy - live - linkchecker tests: stage: tests tags: - floki_development #before_script: *before_script_definition script: - exit 0 clone_pages: stage: clone tags: - floki_development artifacts: name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}" expire_in: 1 week paths: - _raw/book - _raw/study-book script: - | set -x ssh-agent bash -c ' set -x set -e ssh-add ~/.ssh/id_rsa_hopon-studybuch; ssh-keygen -l -E md5 -f ~/.ssh/id_rsa_hopon-studybuch git clone -b master git@collaborating.tuhh.de:itbh/hopon/study-book.git ./_raw/study-book; if [ -n "${STUDY_BOOK_BRANCH}" ]; then git -C ./_raw/study-book checkout "${STUDY_BOOK_BRANCH}"; elif git -C ./_raw/study-book ls-remote --heads --exit-code origin "${CI_COMMIT_REF_NAME}"; then git -C ./_raw/study-book checkout "${CI_COMMIT_REF_NAME}"; fi ' - git -C ./_raw/study-book branch | cat - | set -x ssh-agent bash -c ' set -x set -e ssh-add ~/.ssh/id_rsa_hopon-buch; ssh-keygen -l -E md5 -f ~/.ssh/id_rsa_hopon-buch git clone -b master git@collaborating.tuhh.de:itbh/hopon/book.git ./_raw/book; if [ -n "${BOOK_BRANCH}" ]; then git -C ./_raw/book checkout "${BOOK_BRANCH}"; elif git -C ./_raw/book ls-remote --heads --exit-code origin "${CI_COMMIT_REF_NAME}"; then git -C ./_raw/book checkout "${CI_COMMIT_REF_NAME}"; fi ' - git -C ./_raw/book branch | cat # Zuerst die PDFs, da im Job `pages` die URLs der Abbildungen geändert werden build_pdf: image: docker.rz.tu-harburg.de:5000/docker/gitbook:node stage: pdf script: - gitbook install - | ( set -x cd ./_raw/book; gitbook install; gitbook pdf ./ ../book.pdf ) - mkdir -p ./templates/reader/book_pdf - mv ./_raw/book*.pdf ./templates/reader/book_pdf - | ( set -x cd ./_raw/study-book; gitbook install; gitbook pdf ./ ../studybook.pdf ) - mkdir -p ./templates/studyreader/studybook_pdf - mv ./_raw/studybook*.pdf ./templates/studyreader/studybook_pdf artifacts: name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}" expire_in: 1 week paths: - ./templates/reader/book_pdf - ./templates/studyreader/studybook_pdf build_pages: image: docker.rz.tu-harburg.de:5000/docker/gitbook:node stage: pages artifacts: name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}" expire_in: 1 week paths: - ./templates/reader - ./templates/studyreader script: - | ( # Language Verzeichnisse ermitteln und in den Pfad der Abbildungen integrieren set -x (grep -rlP '\.\.\/abb\/' ./_raw/study-book || true) | while read -r line; do # NUR vier Sprachen werden berücksichtigt: de, en, fa, ar if [ -n "$line" ]; then lang="$(echo "$line" | perl -pe 's!.*\/(de|en|fa|ar)\/.*!\1!g')" export lang echo "Processing $line" perl -i -pe 's!(\().*?\.\.\/(abb)!$1/static/studyreader/$ENV{"lang"}/$2!gm' "$line" fi done ) - | ( set -x cd ./_raw/study-book if [ -f book.json ]; then jq -r --arg base_path "/${CI_PROJECT_PATH}/~${CI_COMMIT_REF_NAME}/" '.base_path |= $base_path' book.json | sponge book.json fi; if [ -f book.json ]; then jq -r --arg pluginsConfig__downloadpdf_base "/${CI_PROJECT_PATH}/~${CI_COMMIT_REF_NAME}/book_pdf/book.pdf?/" '.pluginsConfig.downloadpdf.base |= $pluginsConfig__downloadpdf_base' book.json | sponge book.json fi if [ -f book.json ]; then cat book.json; fi gitbook install gitbook build ( set -x (grep -rlP '\.\.\/static\/' . || true) | while read -r line; do # NUR vier Sprachen werden berücksichtigt: de, en, fa, ar if [ -n "$line" ]; then # lang="$(echo "$line" | perl -pe 's!.*\/(de|en|fa|ar)\/.*!\1!g')"; # export lang echo "Processing $line" perl -i -pe 's!\.\.(/static)!$1!gm' "$line" fi done ) ) - rm -rf ./templates/studyreader - mv ./_raw/study-book/_book ./templates/studyreader - | ( # Language Verzeichnisse ermitteln und in den Pfad der Abbildungen integrieren set -x (grep -rlP '\.\.\/abb\/' ./_raw/book || true) | while read -r line; do # NUR vier Sprachen werden berücksichtigt: de, en, fa, ar if [ -n "$line" ]; then lang="$(echo "$line" | perl -pe 's!.*\/(de|en|fa|ar)\/.*!\1!g')" export lang echo "Processing $line" perl -i -pe 's!(\().*?\.\.\/(abb)!$1/static/reader/$ENV{"lang"}/$2!gm' "$line" fi done ) - | ( set -x cd ./_raw/book; if [ -f book.json ]; then jq -r --arg base_path "/${CI_PROJECT_PATH}/~${CI_COMMIT_REF_NAME}/" '.base_path |= $base_path' book.json | sponge book.json fi; if [ -f book.json ]; then jq -r --arg pluginsConfig__downloadpdf_base "/${CI_PROJECT_PATH}/~${CI_COMMIT_REF_NAME}/book_pdf/book.pdf?/" '.pluginsConfig.downloadpdf.base |= $pluginsConfig__downloadpdf_base' book.json | sponge book.json fi; if [ -f book.json ]; then cat book.json; fi gitbook install gitbook build ( set -x (grep -rlP '\.\.\/static\/' . || true) | while read -r line; do # NUR vier Sprachen werden berücksichtigt: de, en, fa, ar if [ -n "$line" ]; then # lang="$(echo "$line" | perl -pe 's!.*\/(de|en|fa|ar)\/.*!\1!g')"; # export lang echo "Processing $line" perl -i -pe 's!\.\.(/static)!$1!gm' "$line" fi done ) ) - rm -rf ./templates/reader - mv ./_raw/book/_book ./templates/reader start_review: stage: review before_script: *before_script_definition script: # Project specific - export SECRET_KEY=$(openssl rand -base64 12) - export HOST_IP=$(gethostip -d $(hostname --fqdn)) - docker-compose -p ${CI_PROJECT_PATH_SLUG}-${CI_ENVIRONMENT_SLUG} -f ./docker/docker-compose.yml build --no-cache --force-rm - docker-compose -p ${CI_PROJECT_PATH_SLUG}-${CI_ENVIRONMENT_SLUG} -f ./docker/docker-compose.yml down - docker-compose -p ${CI_PROJECT_PATH_SLUG}-${CI_ENVIRONMENT_SLUG} -f ./docker/docker-compose.yml up -d - mkdir -p ./_linkchecker - echo "https://${CI_PROJECT_ID}-${CI_ENVIRONMENT_SLUG}.hpn.rz.tuhh.de/" >./_linkchecker/url artifacts: name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}" expire_in: 1 week paths: - ./_linkchecker environment: name: ${CI_COMMIT_REF_NAME} url: https://${CI_PROJECT_ID}-${CI_ENVIRONMENT_SLUG}.hpn.rz.tuhh.de/ on_stop: stop_review only: - branches tags: - floki_development except: - master stop_review: stage: review variables: GIT_STRATEGY: none script: - cp ./docker/docker-compose.reviews ./docker/docker-compose.yml - docker-compose -p ${CI_PROJECT_PATH_SLUG}-${CI_ENVIRONMENT_SLUG} -f ./docker/docker-compose.yml down when: manual environment: name: ${CI_COMMIT_REF_NAME} action: stop only: - branches tags: - floki_development except: - master deploy_registry: stage: deploy before_script: *before_script_definition script: - docker build --no-cache --pull -t ${CONTAINER_RELEASE_IMAGE} ${DOCKER_FILE_PATH} - docker push ${CONTAINER_RELEASE_IMAGE} tags: - floki_build only: - master deploy_live: stage: live script: - echo ${CONTAINER_RELEASE_IMAGE} - ssh flint.rz.tu-harburg.de -p 22 "sudo docker pull ${CONTAINER_RELEASE_IMAGE}" - ssh flint.rz.tu-harburg.de -p 22 "sudo systemctl restart docker-itbh--hop-on--fahrplan" tags: - deploy environment: name: production url: https://hopon-newcomers.com only: - master when: manual linkchecker:intern: stage: linkchecker except: - master when: manual image: name: linkchecker/linkchecker entrypoint: [""] script: - echo "PLEASE be patient, the application may take a few minutes before it is available." - cat ./_linkchecker/url - linkchecker --recursion-level 10 --threads 10 --no-status --no-robots --no-warnings --ignore-url 'https://fonts.gstatic.com/{0,1}$' $(cat ./_linkchecker/url) linkchecker:all: stage: linkchecker except: - master when: manual image: name: linkchecker/linkchecker entrypoint: [""] script: - echo "PLEASE be patient, the application may take a few minutes before it is available." - cat ./_linkchecker/url - linkchecker --recursion-level 10 --threads 10 --no-status --no-robots --no-warnings --check-extern --ignore-url 'https://fonts.gstatic.com/{0,1}$' $(cat ./_linkchecker/url)