---
# ============LICENSE_START=======================================================
#  Copyright (C) 2021 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=========================================================

- project:
    name: 'meridio-e2e-test-kind'

    project: 'meridio-e2e-test-kind'

    jobs:
      - 'meridio-e2e-test-kind'

- job-template:
    name: 'meridio-e2e-test-kind'
    project-type: pipeline
    disabled: '{obj:disabled}'

    properties:
      - github:
          url: https://github.com/Nordix/Meridio-Operator
      - build-discarder:
          days-to-keep: 60
          num-to-keep: 2000
          artifact-days-to-keep: 60
          artifact-num-to-keep: 2000


    parameters:
      - string:
          name: GITHUB_ORGANIZATION
          default: 'Nordix'
          description: GitHub Organization
      - string:
          name: PROJECT
          default: 'Meridio'
          description: GitHub project
      - string:
          name: GIT_PROJECT
          default: "https://github.com/$GITHUB_ORGANIZATION/$PROJECT.git"
          description: Git URL of the project
      - string:
          name: CURRENT_BRANCH
          default: "master"
          description: Current Git branch
      - string:
          name: DEFAULT_BRANCH
          default: "master"
          description: default branch
      - bool:
          name: NEXT
          default: false
          description: Does the job run has to call for a next run?
      - string:
          name: MERIDIO_VERSION
          default: 'latest'
          description: Version of Meridio
      - string:
          name: TAPA_VERSION
          default: 'latest'
          description: Version of Meridio TAPA
      - string:
          name: KUBERNETES_VERSION
          default: 'v1.25'
          description: Version of Kubernetes
      - string:
          name: NSM_VERSION
          default: 'v1.6.0'
          description: Version of NSM
      - string:
          name: IP_FAMILY
          default: 'dualstack'
          description: IP Family
      - string:
          name: NUMBER_OF_WORKERS
          default: "2"
          description: Number of Kubernetes Workers
      - string:
          name: ENVIRONMENT_NAME
          default: "kind-operator"
          description: Name of the environment (under test/e2e/environment directory in Meridio)
      - string:
          name: SEED
          default: "1"
          description: Order in which the tests are running
      - string:
          name: SKIP
          default: ""
          description: e2e tests to skip
      - string:
          name: FOCUS
          default: ""
          description: e2e tests to focus
      - string:
          name: KIND_EXTERNAL_HOST_DEFAULT_ROUTE
          default: 'yes'
          description: Kind gateway to advertise default or non-default routes
      - bool:
          name: DRY_RUN
          default: false
          description: Dry Run

    dsl: 
      !include-raw-escape: e2e.Jenkinsfile
