---
#
# ============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: bmo_release_branch
        default: '{bmo_release_branch}'
        description: 'The target branch of BMO 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'
    - string:
        name: IRONIC_USE_MARIADB
        default: '{ironic_use_mariadb}'
        description: 'If Ironic should use MariaDB or not.'
    - string:
        name: BUILD_MARIADB_IMAGE_LOCALLY
        default: '{build_mariadb_image_locally}'
    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: '.*?/test-{image_os}-integration-{capm3_target_branch}{trigger_postfix}.*?'
        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
