---
# ============LICENSE_START=======================================================
#  Copyright (C) 2019 Nordix Foundation.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================

- project:
    name: 'onap-tox'

    project: 'onap-tox'

    stream:
      - 'master':
          branch: '{stream}'
          gated-projects: 'infra/stack/onap|infra/installer/oom'
      - 'guilin':
          branch: '{stream}'
          gated-projects: 'infra/stack/onap|infra/installer/oom'
      - 'frankfurt':
          branch: '{stream}'
          gated-projects: 'infra/stack/onap|infra/installer/oom'
      - 'elalto':
          branch: '{stream}'
          gated-projects: 'infra/stack/onap|infra/installer/oom'

    lint-type:
      - ansible-lint:
          disabled: false
          repos-to-ignore: ''
      - shellcheck:
          disabled: false
          repos-to-ignore: ''
      - yamllint:
          disabled: false
          repos-to-ignore: ''

    jobs:
      - 'onap-verify-tox-{stream}'
      - 'onap-verify-{lint-type}-{stream}'

- job-template:
    name: 'onap-verify-tox-{stream}'

    project-type: multijob

    concurrent: true

    node: infra-tools-docker-slave-ubuntu1804

    parameters:
      - project-parameters:
          project: $GERRIT_PROJECT
          branch: '{branch}'
          description: 'The project and branch which the change is proposed for'
      - string:
          name: VERBOSITY
          default: 'false'
          description: 'Verbosity setting for the tox script'
      - nordix-gerrit-parameters

    properties:
      - logrotate
      # NOTE (fdegir): throttle categories are controlled in jenkins global configuration
      - throttle:
          enabled: true
          max-per-node: 1
          max-total: 4
          option: category
          categories:
            - engine-verify-tox

    wrappers:
      - build-timeout:
          timeout: 60
      - fix-workspace-permissions

    scm:
      - git-scm-gerrit:
          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
          branch: $GERRIT_BRANCH
          refspec: $GERRIT_REFSPEC
          wipe_workspace: true
          clean_before: false

    triggers:
      - gerrit:
          server-name: 'Nordix Gerrit'
          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: 'REG_EXP'
              project-pattern: '{gated-projects}'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              disable-strict-forbidden-file-verification: 'false'
              forbidden-file-paths:
                - compare-type: ANT
                  pattern: '.gitignore|.gitreview|.yamllint|README.md|bindep.txt|setup.cfg|setup.py'
          custom-url: '* $JOB_NAME $BUILD_URL'
          readable-message: 'true'

    builders:
      - multijob:
          name: Static Analysis
          condition: ALWAYS
          execution-type: PARALLEL
          projects:
            - name: 'onap-verify-ansible-lint-{stream}'
              current-parameters: true
              kill-phase-on: NEVER
              abort-all-job: false
            - name: 'onap-verify-shellcheck-{stream}'
              current-parameters: true
              kill-phase-on: NEVER
              abort-all-job: false
            - name: 'onap-verify-yamllint-{stream}'
              current-parameters: true
              kill-phase-on: NEVER
              abort-all-job: false

- job-template:
    name: 'onap-verify-{lint-type}-{stream}'

    disabled: '{obj:disabled}'

    concurrent: true

    node: infra-tools-docker-slave-ubuntu1804

    parameters:
      - string:
          name: LINT_TYPE
          default: '{lint-type}'
          description: 'Lint type to run'
      - string:
          name: REPOS_TO_IGNORE
          default: '{repos-to-ignore}'
          description: 'Repos to ignore for the specific lint type'

    properties:
      - logrotate

    wrappers:
      - build-timeout:
          timeout: 150
      - fix-workspace-permissions

    scm:
      - git-scm-gerrit:
          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
          branch: $GERRIT_BRANCH
          refspec: $GERRIT_REFSPEC
          wipe_workspace: true
          clean_before: false

    builders:
      - 'tox-macro'

# vim: set ts=2 sw=2 expandtab:
