---
- job-template: &verify_golang_bolierplate
    # Job template for Golang verify jobs
    #
    # The purpose of this job template is to run:
    # 1. make build
    #
    # golangver can be set to golang110, golang111 or golang112
    # depending on what version is needed by the project
    # default is golang110
    #
    # Required Variables:
    #     branch:    git branch (eg. stable/lithium or master)
    #
    # Optional Variables:
    #     script:    build script to execute
    #     pattern:   ant file-path pattern relative to the workspace used to
    #                trigger the job

    name: '{project-name}-{stream}-verify-golang'
    path: '$WORKSPACE'
    pattern: '**'
    script: ''
    golangver: 'golang110'

    project-type: freestyle
    concurrent: true
    node: '{build-node}'

    properties:
      - infra-properties:
          build-days-to-keep: '{build-days-to-keep}'

    parameters:
      - infra-parameters:
          project: '{project}'
          branch: '{branch}'
          refspec: 'refs/heads/{branch}'
          artifacts: '{archive-artifacts}'

    scm:
      - gerrit-trigger-scm:
          refspec: '$GERRIT_REFSPEC'
          choosing-strategy: 'gerrit'
          submodule-recursive: '{submodule-recursive}'

    wrappers:
      - '{golangver}'
      - infra-wrappers:
          build-timeout: '{build-timeout}'

    triggers:
      - gerrit-trigger-patch-submitted:
          server: '{server-name}'
          project: '{project}'
          branch: '{branch}'
          files: '{pattern}'

    builders:
      - lf-infra-pre-build
      - provide-maven-settings:
          global-settings-file: 'global-settings'
          settings-file: '{mvn-settings}'
      - shell: |
          #!/bin/bash
          cd $WORKSPACE/{path}
          make build
      - shell: '{script}'

    publishers:
      - infra-shiplogs:
          maven-version: '{maven-version}'

- job-template:
    # Job template for Golang verify jobs with subproject support

    <<: *verify_golang_bolierplate
    name: '{project-name}-{stream}-{subproject}-verify-golang'

- job-template:
    # Job template for Golang merge jobs
    #
    # The purpose of this job template is to run:
    # 1. make deploy
    #
    # golangver can be set to golang110 or golang111
    # depending on what version is needed by the project
    # default is golang110
    #
    # Required Variables:
    #     branch:    git branch (eg. stable/lithium or master)

    name: '{project-name}-{stream}-merge-golang'
    path: $WORKSPACE
    golangver: 'golang110'

    project-type: freestyle
    node: '{build-node}'

    properties:
      - infra-properties:
          build-days-to-keep: '{build-days-to-keep}'

    parameters:
      - infra-parameters:
          project: '{project}'
          branch: '{branch}'
          refspec: 'refs/heads/{branch}'
          artifacts: '{archive-artifacts}'
      - maven-exec:
          maven-version: '{maven-version}'

    scm:
      - gerrit-trigger-scm:
          refspec: ''
          choosing-strategy: 'default'
          submodule-recursive: '{submodule-recursive}'

    wrappers:
      - '{golangver}'
      - infra-wrappers:
          build-timeout: '{build-timeout}'

    triggers:
      - gerrit-trigger-patch-merged:
          server: '{server-name}'
          project: '{project}'
          branch: '{branch}'
          files: '**'

    builders:
      - lf-infra-pre-build
      - provide-maven-settings:
          global-settings-file: 'global-settings'
          settings-file: '{mvn-settings}'
      - shell: |
          #!/bin/bash
          cd $WORKSPACE/{path}
          make deploy

    publishers:
      - infra-shiplogs:
          maven-version: '{maven-version}'

- job-template:
    # Job template for building & pushing docker images
    #
    # golangver can be set to golang110 or golang111
    # depending on what version is needed by the project
    # default is golang110
    #
    # The purpose of this job template is to run:
    #  1. login to the docker registry
    #  2. run a specified shell builder
    #

    name: '{project-name}-{stream}-docker-golang-shell-daily'
    golangver: 'golang110'
    project-type: freestyle
    node: 'ubuntu1804-docker-8c-8g'
    disabled: false
    properties:
      - infra-properties:
          build-days-to-keep: '{build-days-to-keep}'

    parameters:
      - infra-parameters:
          project: '{project}'
          branch: '{branch}'
          refspec: 'refs/heads/{branch}'
          artifacts: '{archive-artifacts}'

    scm:
      - gerrit-trigger-scm:
          refspec: ''
          choosing-strategy: 'default'
          submodule-recursive: '{submodule-recursive}'

    wrappers:
      - '{golangver}'
      - infra-wrappers:
          build-timeout: '{build-timeout}'

    triggers:
      # 12 AM UTC
      - timed: '@daily'
      - gerrit-trigger-release-manually:
          server: '{server-name}'
          project: '{project}'
          branch: '{branch}'

    builders:
      - lf-infra-pre-build
      - provide-maven-settings:
          global-settings-file: 'global-settings'
          settings-file: '{mvn-settings}'

      - docker-login

      - shell: '{script}'

    publishers:
      - infra-shiplogs:
          maven-version: '{maven-version}'