---
# ============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: 'openstack-release'

    project: 'openstack-release'

    stream:
      - 'master':
          branch: 'master'
          deploy-scenario: 'os-nosdn-nofeature'
          promote-stack: 'false'
      - 'train':
          branch: 'train'
          deploy-scenario: 'os-nosdn-nofeature'
          promote-stack: 'true'

    environment-type:
      - offline:
          disabled: false
          execution-mode: offline-deployment
          openrc-credentials-file: 'est-jenkins-openrcfile-city-frankfurt-cicd'

    distro:
      - ubuntu1804

    jobs:
      - 'openstack-release-{distro}-{stream}'
      - 'openstack-package-{distro}-{stream}'
      - 'openstack-promote-{distro}-{stream}'

- job-template:
    name: 'openstack-release-{distro}-{stream}'

    project-type: multijob

    disabled: '{obj:disabled}'

    node: 'engine-package-{distro}-fra'

    concurrent: false

    parameters:
      - string:
          name: BRANCH
          default: '{branch}'
          description: 'Branch the job is created for. DO NOT MODIFY!'
      - string:
          name: DISTRO
          default: '{distro}'
          description: 'Distribution to provision and configre target nodes with. DO NOT MODIFY!'
      - string:
          name: DEPLOY_SCENARIO
          default: '{deploy-scenario}'
          description: 'Scenario to test change with. This depends on the branch of the stack.'
      - string:
          name: CI_LOOP
          default: 'release'
          description: 'CI loop type. DO NOT MODIFY!'
      - string:
          name: VERBOSITY
          default: 'false'
          description: 'Engine verbosity'
      - string:
          name: NORDIX_ENGINE_VERSION
          default: 'master'
          description: 'Engine version of engine to package, deploy, test, release'
      - string:
          name: STACK_TYPE
          default: 'openstack'
          description: 'Stack to package, deploy, test, release'
      - string:
          name: STACK_VERSION
          default: '{branch}'
          description: 'Stack version of engine to package, deploy, test, release'
      - string:
          name: NORDIX_KOLLA_VERSION
          default: '{branch}'
          description: 'Kolla version of engine to package, deploy, test, release'
      - string:
          name: NORDIX_BIFROST_VERSION
          default: 'master'
          description: 'Bifrost version of engine to package, deploy, test, release'
      - string:
          name: PROMOTE_STACK
          default: '{promote-stack}'
          description: 'Heat version of engine to package, deploy, test, release'

    properties:
      - logrotate
      # NOTE (fdegir): throttle categories are controlled in jenkins global configuration
      - throttle:
          enabled: true
          max-per-node: 1
          max-total: 1
          option: category
          categories:
            - engine-verify-package

    wrappers:
      - build-timeout:
          timeout: 600
      - mask-passwords
      - fix-workspace-permissions
      - openstack:
          single-use: True

    triggers:
      - pollscm:
          cron: "#H 0,8,16 * * *"

    scm:
      - git:
          url: https://gerrit.nordix.org/infra/engine.git
          branches:
            - master
          timeout: 15
          wipe-workspace: true

    builders:
      - 'generate-release-metadata-macro'
      - inject:
          properties-file: "$WORKSPACE/release.properties"
      - 'generate-ssh-keypair-macro'
      - 'wait-pkg-mgr-macro'
      - multijob:
          name: Packaging
          condition: SUCCESSFUL
          execution-type: PARALLEL
          projects:
            - name: 'openstack-package-{distro}-{stream}'
              current-parameters: false
              git-revision: true
              node-parameters: true
              property-file: "$WORKSPACE/release.properties"
              kill-phase-on: FAILURE
              abort-all-job: true
      - multijob:
          name: Release Test {deploy-scenario}
          condition: SUCCESSFUL
          execution-type: PARALLEL
          projects:
            - name: 'openstack-release-offline-deploy-test-{distro}-baremetal-{stream}'
              current-parameters: false
              git-revision: true
              node-parameters: false
              property-file: "$WORKSPACE/release.properties"
              kill-phase-on: FAILURE
              abort-all-job: true
      - multijob:
          name: Promotion
          condition: SUCCESSFUL
          execution-type: PARALLEL
          projects:
            - name: 'openstack-promote-{distro}-{stream}'
              current-parameters: false
              git-revision: true
              node-parameters: true
              property-file: "$WORKSPACE/release.properties"
              kill-phase-on: FAILURE
              abort-all-job: true

- job-template:
    name: 'openstack-package-{distro}-{stream}'

    disabled: '{obj:disabled}'

    concurrent: false

    parameters:
      - string:
          name: EXECUTION_MODE
          default: 'packaging'
          description: 'Execution mode to run engine'

    properties:
      - logrotate

    wrappers:
      - build-timeout:
          timeout: 70
      - credentials-binding:
          - username-password-separated:
              credential-id: 'nordix-cicd-arm-credentials'
              username: NORDIX_ARM_USERNAME
              password: NORDIX_ARM_TOKEN
      - mask-passwords
      - fix-workspace-permissions

    scm:
      - git:
          url: https://gerrit.nordix.org/infra/engine.git
          branches:
            - master
          timeout: 15
          wipe-workspace: true

    builders:
      - 'package-macro'
      - 'upload-artifact-macro'

- job-template:
    name: 'openstack-promote-{distro}-{stream}'

    disabled: '{obj:disabled}'

    concurrent: false

    properties:
      - logrotate

    wrappers:
      - build-timeout:
          timeout: 30
      - credentials-binding:
          - username-password-separated:
              credential-id: 'nordix-cicd-arm-credentials'
              username: NORDIX_ARM_USERNAME
              password: NORDIX_ARM_TOKEN
      - mask-passwords
      - fix-workspace-permissions

    scm:
      - git:
          url: https://gerrit.nordix.org/infra/engine.git
          branches:
            - master
          timeout: 15
          wipe-workspace: true

    builders:
      - 'promote-macro'
