stages:
  - test
  - build
  - deploy
  - production

docs:
  stage: test
  image: davidhrbac/docker-mdcheck:latest
  allow_failure: true
  script:
  - mdl -r ~MD013 *.md docs.it4i/

two spaces:
  stage: test
  image: davidhrbac/docker-mdcheck:latest
  allow_failure: true
  script:
  - echo "== Files having more than one space betwee two characters =="
  - find docs.it4i/ -name '*.md' -exec grep "[[:alpha:]]  [[:alpha:]]" -l {} +

spell check:
  stage: test
  image: davidhrbac/docker-npmcheck:latest
  allow_failure: true
  script:
  #- npm i markdown-spellcheck -g
  - mdspell '**/*.md' '!docs.it4i/module*.md' '!docs.it4i/anselm-cluster-documentation/software/omics-master/overview.md' '!docs.it4i/downtimes_history.md' -rns --en-us

ext_links:
  stage: test
  image: davidhrbac/docker-mdcheck:latest
  allow_failure: true
  after_script:
  - rm *.json
  script:
  #- find docs.it4i/ -name '*.md' -exec grep --color -l http {} + | xargs awesome_bot -t 10
  #- find docs.it4i/ -name '*.md' -exec grep --color -l http {} + | xargs awesome_bot -t 10 --allow-dupe --allow-redirect
  - find docs.it4i/ -name '*.md' ! -name 'modules-*.md' -exec grep --color -l http {} + | xargs awesome_bot -t 10 --allow-dupe --allow-redirect
  only:
  - master

mkdocs:
  stage: build
  image: davidhrbac/docker-mkdocscheck:latest
  script:
  #- apt-get update
  #- apt-get -y install git
  - bash scripts/add_version.sh
  - bash scripts/get_modules.sh
  - mkdocs build
  - bash scripts/clean_json.sh site/mkdocs/search_index.json
  - sed -i 's,href="" title=",href="/" title=",g' site/404.html
  artifacts:
    paths:
    - site
    expire_in: 1 week

shellcheck:
  stage: test
  image: davidhrbac/docker-shellcheck:latest
  allow_failure: true
  script:
  - which shellcheck || apt-get update && apt-get install -y shellcheck
  - shellcheck *.sh

deploy to stage:
  environment: stage 
  stage: deploy
  image: davidhrbac/docker-mkdocscheck:latest
  before_script:
  # install ssh-agent 
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - 'which rsync || ( apt-get update -y && apt-get install rsync -y )'
  # run ssh-agent
  - eval $(ssh-agent -s)
  # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store
  - ssh-add <(echo "$SSH_PRIVATE_KEY")
  # disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks)
  # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config
  - mkdir -p ~/.ssh
  - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
  - useradd -lM nginx
  script:
  - chown nginx:nginx site -R
  - rsync -a --delete site/ root@"$SSH_HOST_STAGE":/srv/docs.it4i.cz/devel/$CI_BUILD_REF_NAME/

deploy to production:
  environment: production
  stage: deploy
  image: davidhrbac/docker-mkdocscheck:latest
  before_script:
  # install ssh-agent 
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - 'which rsync || ( apt-get update -y && apt-get install rsync -y )'
  # run ssh-agent
  - eval $(ssh-agent -s)
  # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store
  - ssh-add <(echo "$SSH_PRIVATE_KEY")
  # disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks)
  # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config
  - mkdir -p ~/.ssh
  - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config 
  - useradd -lM nginx
  script:
  - chown nginx:nginx site -R
  - rsync -a --delete site/ root@"$SSH_HOST_STAGE":/srv/docs.it4i.cz/site/
  only:
  - master
  when: manual