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

- project:
    name: 'nolabs-verify-merge'

    project: 'nolabs'

    stream:
      - 'master':
          branch: '{stream}'

    jobs:
      - 'nolabs-verify-{stream}':
          slave-label: nolabs-dev
      - 'nolabs-merge-{stream}':
          slave-label: nolabs-dev
      - 'nolabs-deploy-{stream}':
          slave-label: nolabs-prod

- job-template:
    name: 'nolabs-verify-{stream}'

    concurrent: false

    parameters:
      - project-parameters:
          project: '{project}'
          branch: '{branch}'
      - nordix-gerrit-parameters
      - label:
          name: SLAVE_LABEL
          default: '{slave-label}'
          description: 'Slave label to schedule this job on.'

    properties:
      - logrotate
      - build-blocker:
          use-build-blocker: true
          blocking-jobs:
            - 'nolabs-.*'
          block-level: 'NODE'
      - throttle:
          max-per-node: 1
          max-total: 1
          option: project

    wrappers:
      - build-timeout:
          timeout: 10
      - fix-workspace-permissions

    scm:
      - git-scm-gerrit:
          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
          branch: '{branch}'
          refspec: $GERRIT_REFSPEC
          wipe_workspace: true
          clean_before: false

    triggers:
      - gerrit:
          server-name: 'Nordix Gerrit'
          trigger-on:
            - patchset-created-event:
                exclude-drafts: 'false'
                exclude-trivial-rebase: 'false'
                exclude-no-code-change: 'false'
            - draft-published-event
            - comment-added-contains-event:
                comment-contains-value: 'recheck'
            - comment-added-contains-event:
                comment-contains-value: 'reverify'
          projects:
            - project-compare-type: 'REG_EXP'
              project-pattern: 'nolabs/website'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              disable-strict-forbidden-file-verification: 'false'
              forbidden-file-paths:
                - compare-type: ANT
                  pattern: '.gitignore'
                - compare-type: ANT
                  pattern: '.gitreview'

    builders:
      - shell: |
          #!/bin/bash
          echo "To be implemented"

- job-template:
    name: 'nolabs-merge-{stream}'

    concurrent: false

    parameters:
      - project-parameters:
          project: '{project}'
          branch: '{branch}'
      - nordix-gerrit-parameters
      - label:
          name: SLAVE_LABEL
          default: '{slave-label}'
          description: 'Slave label to schedule this job on.'

    properties:
      - logrotate
      - build-blocker:
          use-build-blocker: true
          blocking-jobs:
            - 'nolabs-.*'
          block-level: 'NODE'
      - throttle:
          max-per-node: 1
          max-total: 1
          option: project

    wrappers:
      - build-timeout:
          timeout: 10
      - fix-workspace-permissions

    scm:
      - git-scm:
          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
          branch: '{branch}'
          refspec: ''
          wipe_workspace: true
          clean_before: false

    triggers:
      - gerrit:
          server-name: 'Nordix Gerrit'
          trigger-on:
            - change-merged-event
            - comment-added-contains-event:
                comment-contains-value: 'remerge'
          projects:
            - project-compare-type: 'ANT'
              project-pattern: 'nolabs/website'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              disable-strict-forbidden-file-verification: 'false'
              forbidden-file-paths:
                - compare-type: ANT
                  pattern: '.gitignore'
                - compare-type: ANT
                  pattern: '.gitreview'

    builders:
      - shell: |
          #!/bin/bash
          echo "To be implemented"

- job-template:
    name: 'nolabs-deploy-{stream}'

    concurrent: false

    parameters:
      - project-parameters:
          project: '{project}'
          branch: '{branch}'
      - nordix-gerrit-parameters
      - label:
          name: SLAVE_LABEL
          default: '{slave-label}'
          description: 'Slave label to schedule this job on.'

    properties:
      - logrotate
      - build-blocker:
          use-build-blocker: true
          blocking-jobs:
            - 'nolabs-.*'
          block-level: 'NODE'
      - throttle:
          max-per-node: 1
          max-total: 1
          option: project

    wrappers:
      - build-timeout:
          timeout: 10
      - fix-workspace-permissions

    scm:
      - git-scm:
          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
          branch: '{branch}'
          refspec: ''
          wipe_workspace: true
          clean_before: false

    triggers:
      - gerrit:
          server-name: 'Nordix Gerrit'
          trigger-on:
            - comment-added-contains-event:
                comment-contains-value: 'website-deploy-to-production'
          projects:
            - project-compare-type: 'ANT'
              project-pattern: 'nolabs/website'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              disable-strict-forbidden-file-verification: 'false'
              forbidden-file-paths:
                - compare-type: ANT
                  pattern: '.gitignore'
                - compare-type: ANT
                  pattern: '.gitreview'

    builders:
      - shell: |
          #!/bin/bash
          echo "To be implemented"

# vim: set ts=2 sw=2 expandtab:
