---
######################
# verify before MERGE
######################

- project:
    name: qtip-verify-jobs
    project: qtip
    jobs:
      - 'qtip-verify-{stream}'
    stream:
      - master:
          branch: '{stream}'
          gs-pathname: ''
          disabled: false
      - euphrates:
          branch: 'stable/{stream}'
          gs-pathname: '/{stream}'
          disabled: false

################################
## job templates
#################################
- job-template:
    name: 'qtip-verify-{stream}'

    disabled: '{obj:disabled}'

    parameters:
      - project-parameter:
          project: '{project}'
          branch: '{branch}'
      - 'opnfv-build-ubuntu-defaults'

    scm:
      - git-scm-gerrit

    triggers:
      - gerrit:
          server-name: 'gerrit.opnfv.org'
          trigger-on:
            - patchset-created-event:
                exclude-drafts: 'false'
                exclude-trivial-rebase: 'false'
                exclude-no-code-change: 'false'
            - draft-published-event
            - comment-added-contains-event:
                comment-contains-value: 'recheck'
            - comment-added-contains-event:
                comment-contains-value: 'reverify'
          projects:
            - project-compare-type: 'ANT'
              project-pattern: '{project}'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              disable-strict-forbidden-file-verification: 'true'
              forbidden-file-paths:
                - compare-type: ANT
                  pattern: 'docs/**|.gitignore'

    builders:
      - qtip-unit-tests-and-docs-build
    publishers:
      - publish-coverage
      - email-jenkins-admins-on-failure

# Upload juypter notebook to artifacts for review
# TODO(yujunz): deal with *.ipynb deletion
- job-template:
    name: 'qtip-verify-notebook-{stream}'

    disabled: '{obj:disabled}'

    parameters:
      - project-parameter:
          project: '{project}'
          branch: '{branch}'
      - 'opnfv-build-ubuntu-defaults'

    scm:
      - git-scm-gerrit

    triggers:
      - gerrit:
          server-name: 'gerrit.opnfv.org'
          trigger-on:
            - patchset-created-event:
                exclude-drafts: 'false'
                exclude-trivial-rebase: 'false'
                exclude-no-code-change: 'false'
            - draft-published-event
            - comment-added-contains-event:
                comment-contains-value: 'recheck'
            - comment-added-contains-event:
                comment-contains-value: 'reverify'
          projects:
            - project-compare-type: 'ANT'
              project-pattern: '{project}'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              disable-strict-forbidden-file-verification: 'true'
              file-paths:
                - compare-type: ANT
                  pattern: '**/*.ipynb'

    builders:
      - upload-under-review-notebooks-to-opnfv-artifacts
      - report-build-result-to-gerrit

- job-template:
    name: 'qtip-merged-notebook-{stream}'

    disabled: '{obj:disabled}'

    parameters:
      - project-parameter:
          project: $GERRIT_PROJECT
          branch: '{branch}'
      - string:
          name: GS_URL
          default: '$GS_BASE{gs-pathname}'
          description: "Directory where the build artifact will be located upon the completion of the build."

    scm:
      - git-scm

    triggers:
      - gerrit:
          server-name: 'gerrit.opnfv.org'
          trigger-on:
            - change-merged-event
            - comment-added-contains-event:
                comment-contains-value: 'remerge'
          projects:
            - project-compare-type: 'ANT'
              project-pattern: '*'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              file-paths:
                - compare-type: ANT
                  pattern: '**/*ipynb'

    builders:
      - remove-old-docs-from-opnfv-artifacts

################################
## job builders
#################################
- builder:
    name: qtip-unit-tests-and-docs-build
    builders:
      - shell: |
          #!/bin/bash
          set -o errexit
          set -o pipefail
          set -o xtrace

          tox

# modified from upload-under-review-docs-to-opnfv-artifacts
# in global/releng-macro.yml
- builder:
    name: upload-under-review-notebooks-to-opnfv-artifacts
    builders:
      - shell: |
          #!/bin/bash
          set -o errexit
          set -o pipefail
          set -o xtrace
          export PATH=$PATH:/usr/local/bin/

          [[ $GERRIT_CHANGE_NUMBER =~ .+ ]]

          echo
          echo "###########################"
          echo "UPLOADING DOCS UNDER REVIEW"
          echo "###########################"
          echo

          gs_base="artifacts.opnfv.org/$PROJECT/review"
          gs_path="$gs_base/$GERRIT_CHANGE_NUMBER"
          local_path="upload/$GERRIT_CHANGE_NUMBER"

          mkdir -p $local_path

          git diff HEAD~1 --name-status | grep -E "[AM]\t.+\.ipynb$" | awk '{print $2}' \
            | xargs -I '{}' cp '{}' $local_path
          gsutil -m cp -r "$local_path" "gs://$gs_base/"

          echo "Document link(s):" >> gerrit_comment.txt
          find "$local_path" | grep -e 'ipynb$' | \
              sed -e "s|^$local_path|    https://nbviewer.jupyter.org/url/$gs_path|" >> gerrit_comment.txt