---
- 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:
      - lf-infra-publish

- 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:
      - lf-infra-publish

- 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:
      - lf-infra-publish