---
#
# ============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) 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 Metal3 CI project infra repository.

- job-template:
    name: '{job_prefix}_{proj}_{capm3_target_branch}_integration_test_{image_os}{name_postfix}'
    description: "CAPM3 {capm3_version} integration tests for {org}/{repo} on {image_os} with ironic installed from {ironic_install_type}."
    id: 'integration_tests'
    project-type: pipeline
    defaults: integration-default-values
    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: capm3_release_branch
        default: '{capm3_release_branch}'
        description: 'The target branch of CAPM3 to be used for this test'
    - 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: '{capi_version}'
        description: 'Cluster API version.'
    - string:
        name: CAPM3_VERSION
        default: '{capm3_version}'
        description: 'Cluster API provider Metal3 version.'
    - string:
        name: TARGET_NODE_MEMORY
        default: 4096
        description: 'RAM size of the target host.'
    - string:
        name: IRONIC_INSTALL_TYPE
        default: '{ironic_install_type}'
        description: 'Sets the installation type of ironic during ironic-image build of the BMO deployment'
    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-{image_os}-integration-{capm3_target_branch}{trigger_postfix}(\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: "{target_branches}"
        status-context: "test-{image_os}-integration-{capm3_target_branch}"
        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
