---
#
# ============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 Cluster API Provider Metal3 (CAPM3) feature tests.
# This job can be triggered manually or through a Github pull request. It creates a
# pipeline job. The pipeline scripts are maintained in Metal3 CI project infra repository.

- job-template:
    id: feature_tests
    name: '{job_prefix}_{proj}_feature_tests_{image_os}'
    description: "Inspection, remediation, pivoting, node reuse and repivoting feature tests on {image_os}."
    project-type: pipeline
    defaults: global
    disabled: False
    concurrent: True
    parameters:
    - string:
        name: PROJECT_REPO_ORG
        default: '{org}'
        description: 'Project github repo org name'
    - string:
        name: PROJECT_REPO_NAME
        default: '{repo}'
        description: 'Project github repo name'
    - string:
        name: ghprbActualCommit
        default: 'main'
        description: 'CI Repo branch for triggering manual build'
    - string:
        name: ghprbAuthorRepoGitUrl
        default: 'https://github.com/{org}/{repo}.git'
        description: 'CI Repo URL for triggering manual build'
    - string:
        name: ghprbTargetBranch
        default: 'main'
        description: 'Target branch of the PR'
    - string:
        name: IMAGE_OS
        default: '{image_os}'
        description: 'Distribution to use for the target host as well as source and target cluster. Can be ubuntu or centos'
    - string:
        name: CAPI_VERSION
        default: 'v1beta1'
        description: 'Cluster API version.'
    - string:
        name: CAPM3_VERSION
        default: 'v1beta1'
        description: 'Cluster API provider Metal3 version.'
    - string:
        name: TARGET_NODE_MEMORY
        default: 4096
        description: 'RAM size of the target host.'
    - string:
        name: NUM_NODES
        default: 4
        description: 'Number of libvirt VMs.'
    - string:
        name: TESTS_FOR
        default: "feature_tests_{image_os}"
        description: 'Tests for pivoting and remediation.'

    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/{org}/{repo}

    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: '((.|\n)*\s)?/test-features-{image_os}(\s(.|\n)*)?'
        skip-build-phrase: '/skip-test'
        only-trigger-phrase: True
        github-hooks: True
        permit-all: False
        auto-close-on-fail: False
        allow-whitelist-orgs-as-admins: True
        white-list-target-branches:
          - 'main'
          - 'release-0.5'
          - 'release-0.1'
        status-context: "test-features-{image_os}"
        success-status: "Passed"
        failure-status: "Failed"
        error-status: "Error"
        cancel-builds-on-update: True
    pipeline-scm:
      scm:
      - git:
          url: "{ci_github_repo}"
          credentials-id: "{ci_github_jenkins_credentials_id}"
          branches:
            - '{branch|main}'
          name: 'origin'
          refspec: '+refs/heads/*:refs/remotes/origin/*'
          wipe-workspace: True
          honor-refspec: True
          shallow-clone: False
      script-path: "{ci_github_pipeline}"
      lightweight-checkout: False
