---
# ============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: 'cloud-infra-lint'

    project: 'infra/engine'

    stream:
      - 'master':
          branch: '{stream}'
          disabled: false

    lint-type:
      - ansible-lint
      - yamllint
      - shellcheck

    jobs:
      - 'cloud-infra-verify-engine-{lint-type}-{stream}'

- job-template:
    name: 'cloud-infra-verify-engine-{lint-type}-{stream}'

    disabled: '{obj:disabled}'

    concurrent: true

    node: infra-ubuntu1804

    parameters:
      - project-parameters:
          project: '{project}'
          branch: '{branch}'
      - nordix-gerrit-parameters
      - string:
          name: LINT_TYPE
          default: '{lint-type}'
          description: 'Lint type to run'

    properties:
      - logrotate

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

    scm:
      - git-scm-gerrit:
          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
          branch: '{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: 'infra\/engine'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              file-paths:
                - compare-type: 'ANT'
                  pattern: '**'
          custom-url: '* $JOB_NAME $BUILD_URL'

    builders:
      - 'cloud-infra-lint-macro'

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