---
# ============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
    mvn_version: 3.6.3

# 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
