Commit 80c02043 authored by TUHH GitLab Administrator (Andreas Böttger)'s avatar TUHH GitLab Administrator (Andreas Böttger) 💬
Browse files

Merge branch 'master' into 'development'

Master

See merge request !6
parents d93d1345 b34d6f9e
Loading
Loading
Loading
Loading
+170 −58
Changes for .gitlab-ci.yml: 170 added lines, 58 removed lines.
Original line number Diff line number Diff line
variables:
    REVIEW_IMAGE: docker.rz.tu-harburg.de:5000/docker/nginx--review-apps:latest
    BUILD_IMAGE: docker.rz.tu-harburg.de:5000/docker/gitbook-itbh-glr:latest
    
    DOCKER_CONTAINER_NAME: ${CI_PROJECT_PATH_SLUG}-${CI_ENVIRONMENT_SLUG}
    
before_script:
    - sudo docker pull ${BUILD_IMAGE}
    - sudo docker pull ${REVIEW_IMAGE}
image: docker.rz.tu-harburg.de:5000/docker/gitbook:node

stages:
    - setup
    - test
    - build
    - review
    - deploy
    - clean
    - linkchecker

review:pdf:
    stage: review
    only:
        - branches
    when: manual
    retry: 2
    tags:
        - development
before_script:
    # https://docs.gitlab.com/ee/ci/ssh_keys/README.html
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh

setup:
    stage: setup
    cache:
        key: "$CI_COMMIT_REF_SLUG"
        paths:
            - node_modules
    script:
        - pwd
        - mkdir -p book_pdf; sudo docker run --rm -v $(pwd):/source ${BUILD_IMAGE} pdf ./ ./book_pdf/book.pdf
        - gitbook install


test:
  stage: test
  script:
    #- 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

    #- if [ -f book.json ]; then jq -r --arg base_path "/${CI_PROJECT_PATH}/" '.base_path |= $base_path' book.json | sponge book.json; fi
    #- if [ -f book.json ]; then jq -r --arg pluginsConfig__downloadpdf_base "/${CI_PROJECT_PATH}/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
    
    - exit 0
  cache:
    key: "$CI_COMMIT_REF_SLUG"
    paths:
      - node_modules
    policy: pull
  except:
  - master

pdf:
  stage: build
  script:
    - gitbook install
    - mkdir -p book_pdf
    - gitbook pdf ./ ./book_pdf/book.pdf
  cache:
    key: "$CI_COMMIT_REF_SLUG"
    paths:
      - node_modules
      - book_pdf
  artifacts:
      name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
      paths:
          - book_pdf

pages:branches:
  stage: build
  script:
    - 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
  cache:
    key: "$CI_COMMIT_REF_SLUG"
    paths:
      - node_modules
      - _book
  artifacts:
    paths:
    - _book
  except:
  - master

pages:master:
  stage: build
  script:
    - if [ -f book.json ]; then jq -r --arg base_path "/${CI_PROJECT_PATH}/" '.base_path |= $base_path' book.json | sponge book.json; fi
    - if [ -f book.json ]; then jq -r --arg pluginsConfig__downloadpdf_base "/${CI_PROJECT_PATH}/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
  cache:
    key: "$CI_COMMIT_REF_SLUG"
    paths:
      - node_modules
      - _book
  artifacts:
    paths:
    - _book
  only:
  - master

review:start:
  stage: review
    retry: 2
  script:
        - pwd
        - sudo docker run --detach --rm --env VIRTUAL_HOST=${CI_ENVIRONMENT_SLUG} --name ${DOCKER_CONTAINER_NAME} ${REVIEW_IMAGE} || true
        - sudo docker run --rm -v $(pwd):/source ${BUILD_IMAGE} install
        - sudo docker run --rm -v $(pwd):/source ${BUILD_IMAGE} build
        - sudo docker cp ./_book/. ${DOCKER_CONTAINER_NAME}:/usr/share/nginx/html
        - if [ ! -z "${REVIEW_CREDENTIALS}" ]; then mkdir -p ./nginx && echo "${REVIEW_CREDENTIALS}" > ./nginx/credentials && sudo docker cp ./nginx/credentials ${DOCKER_CONTAINER_NAME}:/etc/nginx/htpasswd/credentials; rm -f ./nginx/credentials; fi
    environment:
        name: review/${CI_COMMIT_REF_NAME}
        url: http://${CI_ENVIRONMENT_SLUG}.collaborating.tuhh.de
        on_stop: review:stop
    only:
        - branches
    tags:
        - development
        - ssg
    - echo "$REVIEW_SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
    - eval $(ssh-agent -s)
    - echo "$REVIEW_SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - ssh -p "${REVIEW_SSH_PORT}" "${REVIEW_SSH_USER}"@"${REVIEW_HOST_NAME}" "mkdir -p /usr/share/nginx/html/~${CI_COMMIT_REF_NAME}"
    - scp -P "${REVIEW_SSH_PORT}" -r _book/* "${REVIEW_SSH_USER}"@"${REVIEW_HOST_NAME}":"/usr/share/nginx/html/~${CI_COMMIT_REF_NAME}"
    - if [ -d book_pdf ]; then ssh -p "${REVIEW_SSH_PORT}" "${REVIEW_SSH_USER}"@"${REVIEW_HOST_NAME}" "mkdir -p /usr/share/nginx/html/~${CI_COMMIT_REF_NAME}/book_pdf"; fi
    - if [ -d book_pdf ]; then scp -P "${REVIEW_SSH_PORT}" -r book_pdf/* "${REVIEW_SSH_USER}"@"${REVIEW_HOST_NAME}":"/usr/share/nginx/html/~${CI_COMMIT_REF_NAME}/book_pdf"; fi
  cache:
    key: "$CI_COMMIT_REF_SLUG"
    paths:
      - _book
      - book_pdf
    policy: pull
  except:
  - master
  environment:
    name: $CI_COMMIT_REF_NAME
    url: https://${REVIEW_PROXY_HOST_NAME}/${REVIEW_BASE_DIR}/~${CI_COMMIT_REF_NAME}/
    on_stop: review:stop
  
review:stop:
  stage: review
    variables:
        GIT_STRATEGY: none
  script:
        - sudo docker stop ${DOCKER_CONTAINER_NAME}
  - echo "$REVIEW_SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts
  - eval $(ssh-agent -s)
  - echo "$REVIEW_SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
  - ssh -p "${REVIEW_SSH_PORT}" "${REVIEW_SSH_USER}"@"${REVIEW_HOST_NAME}" "rm -rf /usr/share/nginx/html/~${CI_COMMIT_REF_NAME}"
  when: manual
    environment:
        name: review/${CI_COMMIT_REF_NAME}
        action: stop
    only:
        - branches
    tags:
        - development
        - ssg
  except:
  - master
  environment:
    name: $CI_COMMIT_REF_NAME
    action: stop
    
.deploy:
    stage: deploy
    only:
        - master
    retry: 2
    tags:
        - ssg
    except:
        - schedules
    script:
        - pwd
        - sudo docker run --rm -v $(pwd):/source ${BUILD_IMAGE} install
        - sudo docker run --rm -v $(pwd):/source ${BUILD_IMAGE} build
        - mkdir -p book_pdf; sudo docker run --rm -v $(pwd):/source ${BUILD_IMAGE} pdf ./ ./book_pdf/book.pdf
        - sshpass -p "${SSH_PASSWD}" ssh -p "${SSH_PORT}" "${SSH_USER}"@"${HOST_NAME}" "mkdir -p /usr/share/nginx/html/production"
        - sshpass -p "${SSH_PASSWD}" scp -P "${SSH_PORT}" -r _book/* "${SSH_USER}"@"${HOST_NAME}":/usr/share/nginx/html/production
        - sshpass -p "${SSH_PASSWD}" scp -P "${SSH_PORT}" -r book_pdf "${SSH_USER}"@"${HOST_NAME}":/usr/share/nginx/html/production
        - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
        - chmod 644 ~/.ssh/known_hosts
        - eval $(ssh-agent -s)
        - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
        - ssh -p "${SSH_PORT}" "${SSH_USER}"@"${HOST_NAME}" "mkdir -p /usr/share/nginx/html"
        - scp -P "${SSH_PORT}" -r _book/* "${SSH_USER}"@"${HOST_NAME}":"/usr/share/nginx/html"
        - if [ -d book_pdf ]; then ssh -p "${SSH_PORT}" "${SSH_USER}"@"${HOST_NAME}" "mkdir -p /usr/share/nginx/html/book_pdf"; fi
        - if [ -d book_pdf ]; then scp -P "${SSH_PORT}" -r book_pdf/* "${SSH_USER}"@"${HOST_NAME}":"/usr/share/nginx/html/book_pdf"; fi
    cache:
        key: "$CI_COMMIT_REF_SLUG"
        paths:
          - _book
          - book_pdf
        policy: pull   
    environment:
        name: production
        name: $CI_COMMIT_REF_NAME
        #url: http://$HOST_NAME$COLON$HTTP_PORT/production/
        #url: https://$PROXY_HOST_NAME/$BASE_PATH/
        url: https://$PROXY_HOST_NAME/$CI_PROJECT_PATH/
 No newline at end of file
        url: https://$PROXY_HOST_NAME/${BASE_DIR}/
        #url: https://$PROXY_HOST_NAME/
        
clean:
  stage: clean
  script:
    - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - ssh -p "${SSH_PORT}" "${SSH_USER}"@"${HOST_NAME}" "rm -rf /usr/share/nginx/html/*"
  when: manual
  only:
    - master
  environment:
    name: $CI_COMMIT_REF_NAME
    action: stop
    
linkchecker:intern:
  stage: linkchecker
  except:
    - master
  image:
    name: linkchecker/linkchecker
    entrypoint: [""]
  script:
    - linkchecker --recursion-level 10 --threads 10 --no-status --no-robots --no-warnings --ignore-url 'https://fonts.gstatic.com/{0,1}$' https://${REVIEW_PROXY_HOST_NAME}/${REVIEW_BASE_DIR}/~${CI_COMMIT_REF_NAME}/
  when: manual
    
linkchecker:all:
  stage: linkchecker
  except:
    - master
  image:
    name: linkchecker/linkchecker
    entrypoint: [""]
  script:
    - linkchecker --recursion-level 10 --threads 10 --no-status --no-robots --no-warnings --check-extern --ignore-url 'https://fonts.gstatic.com/{0,1}$' https://${REVIEW_PROXY_HOST_NAME}/${REVIEW_BASE_DIR}/~${CI_COMMIT_REF_NAME}/
  when: manual

GLOSSARY.md

0 → 100644
+5 −0
Changes for GLOSSARY.md: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
## Glossar

## API

*Application Programming Interface* Dabei handelt es sich um die Schnittstelle einer Software, Sprache oder Programmbibliothek. Menschen und Maschinen können über die API auf das Gerät/die Software zugreifen. Zu jeder API sollte es eine gute Dokumentation geben, die Menschen lesen und verstehen können. [Ein Beispiel ist die API-Referenz von Python](https://docs.python.org/3/).
+2 −0
Changes for README.md: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
<!--
<div class="badge-wrapper">
  <a class="version-badge" href="https://fizban05.rz.tu-harburg.de/itbh-inf-wise201718/veranstaltungsskript-inf-wise201718/">
    <img alt="version HTML" src="https://img.shields.io/badge/version-HTML-yellowgreen.svg">
@@ -9,6 +10,7 @@
    <img alt="version Pandoc PDF" src="https://img.shields.io/badge/version-Pandoc_PDF-red.svg" />
  </a>
</div>
-->

# Über diese Veranstaltung

+19 −1
Changes for SUMMARY.md: 19 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -22,7 +22,21 @@
* [Fahrplan](sitzungen/fahrplan.md)
* [[01] 2017-10-20](sitzungen/01-Fr-2017-10-20.md)
* [[02] 2017-10-27](sitzungen/02-Fr-2017-10-27.md)
    * [Arbeitsauftrag INF2](sitzungen/auftraege/02-Fr-2017-10-27-auftrag-inf2.md)
    * [Arbeitsauftrag](sitzungen/auftraege/02-Fr-2017-10-27-auftrag-inf2.md)
* [[03] 2017-11-03](sitzungen/03-Fr-2017-11-03.md)
    * [Arbeitsauftrag](sitzungen/auftraege/03-Fr-2017-11-03-auftrag-inf2.md)
* [[04] 2017-11-10](sitzungen/04-Fr-2017-11-10.md)
    * [Arbeitsauftrag](sitzungen/auftraege/04-Fr-2017-11-10-auftrag-inf2.md)
* [[05] 2017-11-17](sitzungen/05-Fr-2017-11-17.md)
    * [Arbeitsauftrag](sitzungen/auftraege/05-Fr-2017-11-17-auftrag-inf2.md)
* [[06] 2017-11-24](sitzungen/06-Fr-2017-11-24.md)
    * [Arbeitsauftrag](sitzungen/auftraege/06-Fr-2017-11-24-auftrag-inf2.md)
* [[07] 2017-12-01](sitzungen/07-Fr-2017-12-01.md)
    * [Arbeitsauftrag](sitzungen/auftraege/07-Fr-2017-12-01-auftrag-inf2.md)
* [[08] 2017-12-08](sitzungen/08-Fr-2017-12-08.md)
    * [Arbeitsauftrag](sitzungen/auftraege/08-Fr-2017-12-08-auftrag-inf2.md)
* [[09] 2017-12-15](sitzungen/09-Fr-2017-12-15.md)
    * [Arbeitsauftrag](sitzungen/auftraege/09-Fr-2017-12-15-auftrag-inf2.md)

## Lernmaterialtypen
* [Lernmaterialtypen](material/typen/einleitung.md)
@@ -37,6 +51,7 @@

## Sitzungsmaterial
* [Studienleistungen mit GitLab hochladen](material/sitzungsmaterial/studienleistungen-in-gitlab-hochladen.md)
* [Jupyter Notebook installieren](material/sitzungsmaterial/einrichtung-byod-python.md)
* [Experiment: Client-/Serverkommunikation](material/sitzungsmaterial/analyse-client-server.md)
* [Sechszeiler in Markdown](material/sitzungsmaterial/sechszeiler-in-markdown.md)
* [Einrichtung Raspberry Pi](material/sitzungsmaterial/einrichtung-rpi.md)
@@ -52,6 +67,7 @@

## Referenzen
* [Literatur](material/literatur.md)
* [Glossar](GLOSSARY.md)

## Anhang
* [Atom Editor](./anhang/atom/atom.md)
@@ -59,4 +75,6 @@

## Meta
* [Impressum und Kontakt](meta/impressum.md)
* [Datenschutzerklärung](meta/datenschutz.md)
* [Beitragen und Weiternutzen](meta/beitragen.md)
+106 KiB
Loading image diff...
Loading