---
#
# ============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_artifacts
    - update_nordix_repos
    - openstack_node_image_building
    - openstack_ipa_and_ironic_image_building
    - metal3_ipa_and_ironic_image_building_test
    - airship_integration_test_centos
    - airship_integration_test_ubuntu
    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: 'nordix_metal3_dev_env'
    branch: '${{ghprbActualCommit}}'
    ci_github_whitelist_org:
    - nordix-airship
    jobs:
    - feature_tests_ubuntu
    - feature_tests_centos
    - feature_tests_upgrade_ubuntu
    repo:
      org: "Nordix"
      name: "metal3-dev-env"
    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: 'nordix_bmo'
    branch: '${{ghprbActualCommit}}'
    ci_github_whitelist_org:
    - nordix-airship
    jobs:
    - feature_tests_ubuntu
    - feature_tests_centos
    - feature_tests_upgrade_ubuntu
    repo:
      org: "Nordix"
      name: "baremetal-operator"
    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: 'nordix_capi_m3'
    branch: '${{ghprbActualCommit}}'
    ci_github_whitelist_org:
    - nordix-airship
    jobs:
    - feature_tests_ubuntu
    - feature_tests_centos
    - feature_tests_upgrade_ubuntu
    repo:
      org: "Nordix"
      name: "cluster-api-provider-metal3"
    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_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu
    - capi_bm_v1a5_integration_tests_centos
    - capi_bm_v1a5_integration_tests_ubuntu
    - feature_tests_ubuntu
    - feature_tests_centos
    - feature_tests_upgrade_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:
    - master_clean

- project:
    name: "metal3io_bmo"
    repo:
      org: "metal3-io"
      name: "baremetal-operator"
    jobs:
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu
    - capi_bm_v1a5_integration_tests_centos
    - capi_bm_v1a5_integration_tests_ubuntu
    - feature_tests_ubuntu
    - feature_tests_centos
    - feature_tests_upgrade_ubuntu

- project:
    name: "metal3io_ipam"
    repo:
      org: "metal3-io"
      name: "ip-address-manager"
    jobs:
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu
    - capi_bm_v1a5_integration_tests_centos
    - capi_bm_v1a5_integration_tests_ubuntu

- project:
    name: "metal3io_metal3_dev_env"
    jobs:
    - 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
    - capi_bm_v1a5_integration_tests_centos
    - capi_bm_v1a5_integration_tests_ubuntu
    - capi_bm_v1a5_master_integration_tests_centos
    - capi_bm_v1a5_master_integration_tests_ubuntu
    - feature_tests_ubuntu
    - feature_tests_centos
    - feature_tests_upgrade_ubuntu
    - master_feature_tests_ubuntu
    - master_feature_tests_centos
    - master_feature_tests_upgrade_ubuntu

    repo:
      org: "metal3-io"
      name: "metal3-dev-env"

- project:
    name: "metal3io_capi_m3"
    repo:
      org: "metal3-io"
      name: "cluster-api-provider-metal3"
    jobs:
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu
    - capi_bm_v1a5_integration_tests_centos
    - capi_bm_v1a5_integration_tests_ubuntu
    - capi_capm3_v1a5_e2e_tests_ubuntu
    - capi_capm3_v1a5_e2e_tests_centos
    - feature_tests_ubuntu
    - feature_tests_centos
    - feature_tests_upgrade_ubuntu

- project:
    name: "metal3io_ironic_image"
    repo:
      org: "metal3-io"
      name: "ironic-image"
    jobs:
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu
    - capi_bm_v1a5_integration_tests_centos
    - capi_bm_v1a5_integration_tests_ubuntu
    - feature_tests_ubuntu
    - feature_tests_centos
    - feature_tests_upgrade_ubuntu

- project:
    name: "metal3io_ironic_ipa_downloader"
    repo:
      org: "metal3-io"
      name: "ironic-ipa-downloader"
    jobs:
    - capi_bm_v1a4_integration_tests_centos
    - capi_bm_v1a4_integration_tests_ubuntu
    - capi_bm_v1a5_integration_tests_centos
    - capi_bm_v1a5_integration_tests_ubuntu
    - feature_tests_ubuntu
    - feature_tests_centos
    - feature_tests_upgrade_ubuntu
