---
#
# ============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 the list of JJB projects in airship category. Each project
# corresponds to a github repository. Under each project's 'jobs' list defines the
# jobs associated with that github repository. The job definitions can be found
# in job_{job_id}.yml files in any of JJB include folders.

- project:
    name: 'nordix_dev_tools'
    branch: '${{ghprbActualCommit}}'
    ci_github_whitelist_org:
    - nordix-airship
    jobs:
    - linter_tests
    - openstack_image_building
    - docker_image_building
    - update_nordix_repos
    repo:
      org: "Nordix"
      name: "airship-dev-tools"
    ci_github_jenkins_credentials_id: 'nordix-airship-ci-github-prod-token'
    ci_ghprb_auth_id: 'e8a43847-46ff-42db-a5db-7366df0e4ee2'
    ci_github_repo: 'https://github.com/Nordix/airship-dev-tools.git'

- project:
    name: 'metal3io_project_infra'
    branch: '${{ghprbActualCommit}}'
    ci_github_whitelist_org:
    - nordix-airship
    repo:
      org: "metal3-io"
      name: "project-infra"
    ci_github_repo: '${{ghprbAuthorRepoGitUrl}}'
    jobs:
    - capi_bm_v1a2_integration_tests_centos
    - capi_bm_v1a2_integration_tests_ubuntu
    - capi_bm_v1a3_integration_tests_centos
    - capi_bm_v1a3_integration_tests_ubuntu
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu

- project:
    name: 'metal3io_project_infra_cleanup'
    ci_github_whitelist_org:
    - nordix-airship
    repo:
      org: "metal3-io"
      name: "project-infra"
    ci_github_pipeline: 'jenkins/jobs/integration_tests_clean.pipeline'
    jobs:
    - capi_bm_master_clean

- project:
    name: 'metal3io_project_infra_cleanup_test'
    branch: '${{ghprbActualCommit}}'
    ci_github_whitelist_org:
    - nordix-airship
    repo:
      org: "metal3-io"
      name: "project-infra"
    ci_github_repo: '${{ghprbAuthorRepoGitUrl}}'
    ci_github_pipeline: 'jenkins/jobs/integration_tests_clean.pipeline'
    jobs:
    - capi_bm_clean

- project:
    name: "metal3io_bmo"
    repo:
      org: "metal3-io"
      name: "baremetal-operator"
    jobs:
    - capi_bm_v1a2_integration_tests_centos
    - capi_bm_v1a2_integration_tests_ubuntu
    - capi_bm_v1a3_integration_tests_centos
    - capi_bm_v1a3_integration_tests_ubuntu
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu

- project:
    name: "metal3io_metal3_dev_env"
    jobs:
    - capi_bm_v1a2_integration_tests_centos
    - capi_bm_v1a2_integration_tests_ubuntu
    - capi_bm_v1a2_master_integration_tests_ubuntu
    - capi_bm_v1a2_master_integration_tests_centos
    - capi_bm_v1a3_integration_tests_centos
    - capi_bm_v1a3_integration_tests_ubuntu
    - capi_bm_v1a3_master_integration_tests_ubuntu
    - capi_bm_v1a3_master_integration_tests_centos
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu
    - capi_bm_v1a4_master_integration_tests_centos
    - capi_bm_v1a4_master_integration_tests_ubuntu
    repo:
      org: "metal3-io"
      name: "metal3-dev-env"

- project:
    name: "metal3io_capi_bm"
    repo:
      org: "metal3-io"
      name: "cluster-api-provider-baremetal"
    jobs:
    - capi_bm_v1a2_integration_tests_centos
    - capi_bm_v1a2_integration_tests_ubuntu

- project:
    name: "metal3io_capi_m3"
    repo:
      org: "metal3-io"
      name: "cluster-api-provider-metal3"
    jobs:
    - capi_bm_v1a3_integration_tests_centos
    - capi_bm_v1a3_integration_tests_ubuntu
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu

- project:
    name: "metal3io_ironic_image"
    repo:
      org: "metal3-io"
      name: "ironic-image"
    jobs:
    - capi_bm_v1a2_integration_tests_centos
    - capi_bm_v1a2_integration_tests_ubuntu
    - capi_bm_v1a3_integration_tests_centos
    - capi_bm_v1a3_integration_tests_ubuntu
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu

- project:
    name: "metal3io_ironic_inspector"
    repo:
      org: "metal3-io"
      name: "ironic-inspector-image"
    jobs:
    - capi_bm_v1a2_integration_tests_centos
    - capi_bm_v1a2_integration_tests_ubuntu
    - capi_bm_v1a3_integration_tests_centos
    - capi_bm_v1a3_integration_tests_ubuntu
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu

- project:
    name: "metal3io_ironic_ipa_downloader"
    repo:
      org: "metal3-io"
      name: "ironic-ipa-downloader"
    jobs:
    - capi_bm_v1a2_integration_tests_centos
    - capi_bm_v1a2_integration_tests_ubuntu
    - capi_bm_v1a3_integration_tests_centos
    - capi_bm_v1a3_integration_tests_ubuntu
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu
