---
#
# ============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}}'


- project:
    name: "metal3io_bmo"
    repo:
      org: "metal3-io"
      name: "baremetal-operator"


- project:
    name: "metal3io_metal3_dev_env"
    jobs:
    - capi_bm_integration_tests_ubuntu
    - capi_bm_integration_tests_centos
    - capi_bm_master_integration_tests_ubuntu
    - capi_bm_master_integration_tests_centos
    - 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
    repo:
      org: "metal3-io"
      name: "metal3-dev-env"

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

- project:
    name: "metal3io_ironic_image"
    repo:
      org: "metal3-io"
      name: "ironic-image"

- project:
    name: "metal3io_ironic_inspector"
    repo:
      org: "metal3-io"
      name: "ironic-inspector-image"

- project:
    name: "metal3io_ironic_ipa_downloader"
    repo:
      org: "metal3-io"
      name: "ironic-ipa-downloader"
