stages:
  - build
  - publish

.template:build_guide:
  stage: build
  image: alpine
  before_script:
    - apk update
    - apk add --no-cache ruby asciidoctor git
    - gem install asciidoctor-pdf --pre
  artifacts:
    paths:
      - "angelguide_en.pdf"
      - "angelguide_de.pdf"
    expire_in: 12 months

build_guide_by_tag:
  extends: .template:build_guide
  script:
    - export COMMIT_DATE=$(git show -s --format=%ci $CI_COMMIT_SHA | cut -c1-10)
    - export REVISION=$CI_COMMIT_TAG
    - asciidoctor-pdf -a revnumber=$REVISION -a revdate=$COMMIT_DATE -o angelguide_en.pdf guide.adoc
    - asciidoctor-pdf -a revnumber=$REVISION -a revdate=$COMMIT_DATE -o angelguide_de.pdf -a lang=de guide.adoc
  rules:
    - if: $CI_COMMIT_TAG != null
      when: always
  
build_guide:
  extends: .template:build_guide
  script:
    - export COMMIT_DATE=$(git show -s --format=%ci $CI_COMMIT_SHA | cut -c1-10)
    - export REVISION=$CI_COMMIT_SHORT_SHA
    - asciidoctor-pdf -a revnumber=$REVISION -a revdate=$COMMIT_DATE -o angelguide_en.pdf guide.adoc
    - asciidoctor-pdf -a revnumber=$REVISION -a revdate=$COMMIT_DATE -o angelguide_de.pdf -a lang=de guide.adoc
  rules:
    - if: $CI_COMMIT_TAG == null
      when: always

publish_guide:
  stage: publish
  image: kroniak/ssh-client
  before_script:
    - apk update
    - apk add --no-cache rsync
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - eval $(ssh-agent -s)
    - echo -n "$SSH_PRIVATE_KEY" | ssh-add -
    - ssh-keyscan -H "$PUBLISH_HOST" >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
  script:
    - 'rsync -av angelguide_*.pdf $PUBLISH_USER@$PUBLISH_HOST:$PUBLISH_PATH'
  rules:
    - if: '$CI_COMMIT_REF_NAME == "master" && $CI_COMMIT_TAG != null'
      when: on_success
    - when: never