---
############
# BUILDERS #
############

- builder:
    name: oom-create-netrc
    builders:
      - inject:
          properties-content: "SERVER_ID={server-id}"
      - shell: !include-raw-escape: ../shell/helm/oom-create-netrc.sh

- builder:
    name: helm-install
    builders:
      - inject:
          properties-content: "HELM_VER={helm_ver}"
      - shell: !include-raw-escape: ../shell/helm/helm-install.sh

###########
# ANCHORS #
###########
- helm_job_boiler_plate: &helm_job_boiler_plate
    name: helm_job_boiler_plate

    ######################
    # Default parameters #
    ######################
    branch: master
    # default params for helm jobs
    build_script: ''
    git-url: '$GIT_URL/$PROJECT'
    post_build_script: ''
    pre_build_script: ''
    build-timeout: 240

    #####################
    # Job Configuration #
    #####################

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

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

    parameters:
      - lf-infra-parameters:
          branch: '{branch}'
          project: '{project}'
          stream: '{stream}'
          lftools-version: '{lftools-version}'
      - string:
          name: HELM_BIN
          default: '{helm_bin|helm3.8}'
      - string:
          name: BUILD_TYPE
          default: '{build_type|snapshot}'

    wrappers:
      - lf-infra-wrappers:
          build-timeout: '{build-timeout}'
          jenkins-ssh-credential: '{jenkins-ssh-credential}'

    builders:
      - lf-infra-pre-build
      - lf-provide-maven-settings:
          global-settings-file: '{mvn-global-settings}'
          settings-file: '{mvn-settings}'
      - shell: '{obj:pre_build_script}'
      - shell: '{obj:build_script}'
      - oom-create-netrc:
          server-id: oom-helm
      - shell: '{obj:post_build_script}'
      - lf-provide-maven-settings-cleanup

    publishers:
      - lf-infra-publish

#################
# JOB TEMPLATES #
#################
- job-template:
    name: '{project-name}-{stream}-verify-{helm_bin}'
    # Job template for helm verify jobs

    <<: *helm_job_boiler_plate
    concurrent: true

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

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

- job-template:
    name: '{project-name}-{stream}-merge-helm'
    # Job template for Helm merge jobs

    <<: *helm_job_boiler_plate

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

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

- job-template:
    name: '{project-name}-{stream}-release-helm'
    # Job template for Helm stage jobs

    <<: *helm_job_boiler_plate

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

    triggers:
      - gerrit:
          server-name: '{gerrit-server-name}'
          trigger-on:
            - comment-added-contains-event:
                comment-contains-value: '^Patch Set\s+\d+:\s+release-helm\s*$'
          projects:
            - project-compare-type: 'ANT'
              project-pattern: '{project}'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              file-paths:
                - compare-type: 'ANT'
                  pattern: '**'

- job-template:
    name: '{project-name}-{stream}-verify-make-{helm_bin}'

    <<: *helm_job_boiler_plate

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

    triggers:
      - gerrit:
          server-name: '{gerrit-server-name}'
          trigger-on:
            - comment-added-contains-event:
                comment-contains-value: '^Patch Set\s+\d+:\s+helm-latest\s*$'
          projects:
            - project-compare-type: 'ANT'
              project-pattern: '{project}'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              file-paths:
                - compare-type: 'ANT'
                  pattern: '**'

    builders:
      - lf-infra-pre-build
      - helm-install:
          helm_ver: 3.10.2
      - shell: '{obj:pre_build_script}'
      - shell: '{obj:build_script}'