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

- job-template:
    name: '{project-name}-build-merge-{distro}-{stream}'

    node: 'eiffel-build-{distro}'

    disabled: false

    concurrent: false

    properties:
      - logrotate
      - github:
          # NOTE (fdegir): url is hardcoded here since env vars in job properties
          # do not seem to be resolved correctly, causing job no to function properly
          url: 'https://github.com/eiffel-community/{project-git-repo}'

    parameters:
      - project-parameters:
          project: '{project}'
          branch: '{branch}'
      - string:
          name: GITHUB_BASE_URL
          default: https://github.com/eiffel-community
          description: HTTPS URL of Project Repo on GitHub to clone repo.
      - string:
          name: GITHUB_API_URL
          default: https://api.github.com/repos/eiffel-community
          description: API URL of Project Repo on GitHub to clone repo.
      - string:
          name: IMAGE_DOCKERFILE
          default: '{image-dockerfile}'
          description: Dockerfile to use for building the container image
      - string:
          name: IMAGE_NAME
          default: '{image-name}'
          description: Name of the container image
      - string:
          name: IMAGE_TAG
          default: '{image-tag}'
          description: Tag to apply to the container image
      - choice:
          name: HARBOR_EIFFEL_PROJECT
          choices:
            - eiffel
            - eiffel-playground
          description: Project to push container images to. Default is eiffel. eiffel-playground is for development purposes.
      - choice:
          name: PODMAN_LOG_LEVEL
          choices:
            - error
            - debug
            - info
            - warn
            - fatal
            - panic
          description: Podman log level to use. Default is error.
      - string:
          name: NORDIX_REGISTRY
          default: 'registry.nordix.org'
          description: Nordix container image registry.

    scm:
      - git:
          url: 'https://github.com/eiffel-community/{project-git-repo}.git'
          branches:
            - '*/{branch}'
          refspec: ''
          timeout: 15
          per-build-tag: false
          skip-tag: true
          shallow-clone: false
          use-author: false
          ignore-notify: false
          wipe-workspace: true
          prune: false
          clean:
            after: false
            before: false
          choosing-strategy: 'default'
          basedir: '$WORKSPACE'

    triggers:
      - github

    wrappers:
      - build-timeout:
          timeout: 10
      - nordixinfra-harbor-creds-wrapper
      - nordixinfra-eiffel-github-token
      - mask-passwords
      - openstack:
          single-use: true

    builders:
      - '{project-build-macro}'

    publishers:
      - postbuildscript:
          builders:
            - role: SLAVE
              build-on:
                - SUCCESS
                - FAILURE
                - ABORTED
                - NOT_BUILT
                - UNSTABLE
              build-steps:
                - 'eiffel-global-pr-comment-macro'

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