---

# -----------------------------------------------------------------------
# Copyright 2018-2024 Open Networking Foundation Contributors
#
# 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-FileCopyrightText: 2018-2024 Open Networking Foundation Contributors
# SPDX-License-Identifier: Apache-2.0
# -----------------------------------------------------------------------
# Intent: verification jobs for 'xos-tosca' repo
# -----------------------------------------------------------------------

- project:
    name: xos-tosca
    project: '{name}'

    jobs:
      - 'verify-xos-tosca-jobs':
          branch-regexp: '{supported-branches-regexp}'
      - 'publish-xos-tosca-jobs'

- job-group:
    name: 'verify-xos-tosca-jobs'
    jobs:
      - 'verify-licensed'
      - 'python-unit-test':
          dependency-jobs: 'verify_xos-tosca_tag-collision'

- job-group:
    name: 'publish-xos-tosca-jobs'
    jobs:
      - 'docker-publish':
          maintainers: "releng+voltha-build@linuxfoundation.org, scottb@opennetworking.org"
          docker-repo: 'xosproject'
          dependency-jobs: 'version-tag_wildcard'

# [EOF]
