---
# CORD docker image building + dockerhub publishing tasks

- project:
    name: imagebuilder

    # add repos that have documentation to the project list in both jobs
    jobs:
      - 'publish-imagebuilder':
          project-regexp: '{imagebuilder-projects-regexp}'
          branch-regexp: '{supported-branches-regexp}'
          dependency-jobs: 'version-tag'

- job-template:
    id: publish-imagebuilder
    name: 'publish-imagebuilder'
    description: |
      Created by {id} job-template from ci-management/jjb/imagebuilder.yaml

    triggers:
      - cord-infra-gerrit-trigger-merge:
          gerrit-server-name: '{gerrit-server-name}'
          project-regexp: '{project-regexp}'
          branch-regexp: '{branch-regexp}'
          file-include-regexp: '{all-files-regexp}'
          dependency-jobs: '{dependency-jobs}'

    properties:
      - cord-infra-properties:
          build-days-to-keep: '{build-days-to-keep}'
          artifact-num-to-keep: '{artifact-num-to-keep}'

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

    parameters:
      - string:
          name: executorNode
          default: 'imagebuilder'
          description: 'Name of the Jenkins node to run the job on'

      - string:
          name: manifestUrl
          default: '{gerrit-server-url}/{cord-repo-manifest}'
          description: 'URL to the repo manifest'

      - string:
          name: manifestBranch
          default: '$GERRIT_BRANCH'
          description: 'Name of the repo branch to use'

      # NOTE: May need to parameters that give the ability to rebuild from a specific
      # tag or commit on a branch.

      - bool:
          name: build
          default: false
          description: 'Rebuild all containers (same as "docker build --no-cache")'

      - bool:
          name: force
          default: false
          description: 'Force remove obsolete tags/images (same as "docker rmi --force")'

      - string:
          name: failureEmail
          default: '{failure-email-address}, $GERRIT_PATCHSET_UPLOADER_EMAIL'
          description: 'On job failure, send an email to these addresses'

    project-type: pipeline
    concurrent: false

    dsl: !include-raw-escape: pipeline/imagebuilder.groovy

