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

# this job gets triggered when a change is proposed to
# nonrtric/plt/ranpm project on Nordix Gerrit.

- _nonrtric-plt-ranpm_common: &nonrtric_plt_ranpm_jdk_common
    name: nonrtric-plt-ranpm-common
    project: nonrtric/plt/ranpm
    project-name: nonrtric-plt-ranpm
    jdk-version: java-17

# Job for nonrtric-plt-ranpm-datafilecollector
- project:
    <<: *nonrtric_plt_ranpm_jdk_common
    name: nonrtric-plt-ranpm-datafilecollector
    project-name: nonrtric-plt-ranpm-datafilecollector
    mvn-params: "-f datafilecollector -Dbuild.number=${{BUILD_NUMBER}}"
    subdirectory: datafilecollector
    trigger_branch_pattern: '**'
    trigger_files_path_pattern: '**/datafilecollector/**'
    jobs:
      - 'oransc-{project-name}-verify-java'
    stream:
      - master:
          branch: master

# Jobs for nonrtric-plt-ranpm-pmproducer
- project:
    <<: *nonrtric_plt_ranpm_jdk_common
    name: nonrtric-plt-ranpm-pmproducer
    project-name: nonrtric-plt-ranpm-pmproducer
    mvn-params: "-f pmproducer -Dbuild.number=${{BUILD_NUMBER}}"
    subdirectory: pmproducer
    trigger_branch_pattern: '**'
    trigger_files_path_pattern: "**/pmproducer/**"
    jobs:
      - 'oransc-{project-name}-verify-java'
    stream:
      - master:
          branch: master

# Jobs for nonrtric-plt-ranpm-influxlogger
- project:
    <<: *nonrtric_plt_ranpm_jdk_common
    name: nonrtric-plt-ranpm-influxlogger
    project-name: nonrtric-plt-ranpm-influxlogger
    mvn-params: "-f influxlogger -Dbuild.number=${{BUILD_NUMBER}}"
    subdirectory: influxlogger
    trigger_branch_pattern: '**'
    trigger_files_path_pattern: "**/influxlogger/**"
    jobs:
      - 'oransc-{project-name}-verify-java'
    stream:
      - master:
          branch: master

# Jobs for nonrtric-plt-ranpm-pm-file-converter
- project:
    <<: *nonrtric_plt_ranpm_jdk_common
    name: nonrtric-plt-ranpm-pm-file-converter
    project-name: nonrtric-plt-ranpm-pm-file-converter
    directory: pm-file-converter
    trigger_branch_pattern: '**'
    trigger_files_path_pattern: "**/pm-file-converter/**"
    jobs:
      - 'oransc-{project-name}-verify-go'
    stream:
      - master:
          branch: master
