---
#
# ============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=========================================================

# Description:
# ============
# This file contains job template definition for K8s CAPI Baremetal integration tests.
# This job can be triggered manually or through a Github pull request. It creates a
# pipeline job. The pipeline scripts are maintained in Airship CI repository.

- job-template:
    id: linter_tests
    name: '{job_prefix}_{name}_linter_test'
    description: "Code linting tests for {repo[org]}/{repo[name]}. "
    project-type: pipeline
    defaults: global
    disabled: False
    concurrent: True
    parameters:
    - string:
        name: PROJECT_REPO_ORG
        default: '{repo[org]}'
        description: 'Project github repo org name'
    - string:
        name: PROJECT_REPO_NAME
        default: '{repo[name]}'
        description: 'Project github repo name'
    - string:
        name: ghprbActualCommit
        default: 'master'
        description: 'CI Repo branch for triggering manual build'

    properties:
    - build-discarder:
        days-to-keep: 30
        num-to-keep: 300
        artifact-days-to-keep: -1
        artifact-num-to-keep: -1
    - github:
        url: https://github.com/{repo[org]}/{repo[name]}

    triggers:
    - github-pull-request:
        admin-list:
          - '{ci_github_admin_user}'
        org-list: "{ci_github_whitelist_org}"
        cron: 'H/5 * * * *'
        auth-id: "{ci_ghprb_auth_id}"
        trigger-phrase: '/lint'
        skip-build-phrase: '/skip-test'
        only-trigger-phrase: True
        github-hooks: False
        permit-all: False
        auto-close-on-fail: False
        allow-whitelist-orgs-as-admins: True
        white-list-target-branches:
          - master
        status-context: "linter-tests"
        success-status: "Passed"
        failure-status: "Failed"
        error-status: "Error"
        cancel-builds-on-update: True
    pipeline-scm:
      scm:
      - git:
          url: https://github.com/{ci_github_repo}.git
          credentials-id: "{ci_github_jenkins_credentials_id}"
          branches:
            - '{branch|master}'
          name: 'origin'
          refspec: '+refs/heads/*:refs/remotes/origin/*'
          wipe-workspace: True
          honor-refspec: True
          shallow-clone: False
      script-path: 'ci/jobs/{id}.pipeline'
      lightweight-checkout: False
