---
#
# ============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: capm3_release_branch
        default: 'main'
        description: 'The target branch of CAPM3 to be used for this test'
    - 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-1.3'
          - 'release-1.2'
          - 'release-1.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
