---
# CORD GLOBAL jenkins job builder (JJB) defaults

- defaults:
    name: global

    # used to enable disable jobs if the job template contains
    # disabled: '{disable-job}'
    disable-job: false

    # https://docs.releng.linuxfoundation.org/projects/lftools/en/latest/commands/version.html
    # https://docs.releng.linuxfoundation.org/projects/lftools/en/latest/release-notes.html#v0-35-11-4
    # lftools
    lftools-version: '~=0.37.4'

    # git module config
    # LF templates require these to be set in later versions of global-jjb for git module
    choosing_strategy: 'default'
    submodule-disable: false
    submodule-recursive: false
    submodule-timeout: 10

    # name of the SSH key to use in most cases
    jenkins-ssh-credential: 'cord-jenkins-ssh'
    gerrit-ssh-credential: 'gerrit-jenkins-user'

    # by default, don't depend on other jobs
    dependency-jobs: ''

    # SCM checkout locations within Jenkins Workspace
    destination-dir: ''
    basedir: ''

    # used to rename jobs as is required, if running same job more than once
    # for a project
    name-extension: ''

    # How long to keep builds and artifacts
    build-days-to-keep: 60
    artifact-num-to-keep: 30

    # How long to keep builds and artifacts for jobs that generate a lot of artifacts
    big-build-days-to-keep: 10
    big-artifact-num-to-keep: 5

    # list of artifacts to archive
    archive-artifacts: ''

    # build timeout (minutes)
    build-timeout: 20

    # timed trigger defaults, crontab syntax
    # H = random value hashed by name of job
    every-hour: "H * * * *"
    every-four-hours: "H */4 * * *"
    every-six-hours: "H */6 * * *"
    every-eight-hours: "H */8 * * *"
    twice-a-day: "H */12 * * *"
    once-a-day: "H 0 * * *"

    # The most frequently used type of Build Executor. Name is per the LF global-jjb.
    # See build node types under "Cloud > Amazon EC2" at
    #  https://jenkins.lfbroadband.org/configure
    build-node: 'ubuntu18.04-basebuild-1c-1g'

    # CORD Gerrit server definition, set in configuration
    gerrit-server-name: 'CORD Gerrit'

    # URL for Gerrit server, for use with `repo`
    gerrit-server-url: 'https://gerrit.lfbroadband.org'
    gerrit-server-ssh-url: 'ssh://jenkins@gerrit.lfbroadband.org:29418'

    # name of the manifest git repos used with the `repo` cli tool
    cord-repo-manifest: manifest.git
    cordqa-manifest-repo: qa-manifest.git
    go-manifest-repo: go-manifest.git
    voltha-test-manifest-repo: voltha-test-manifest.git

    # default email address to send job failure messages
    failure-email-address: 'cord-dev@opencord.org'
    failure-notification: 'cord-dev@opencord.org'
    failure-notification-prefix: "[releng]"

    # regexp for gerrit triggers
    # list of supported branches, for branch-regexp
    all-branches-regexp: '.*'
    supported-branches-regexp: '^(master|cord-7.0|cord-6.1|seba-1.0|voltha-2.[0-9]+)$'
    legacy-branches-regexp: '^(cord-5.0|cord-4.1|cord-4.0)$'
    modern-branches-regexp: '^(master|cord-7.0|cord-6.1|cord-6.0|seba-1.0|voltha-2.3|voltha-2.4)$'
    platform-branches-regexp: '^(master|cord-7.0|cord-6.1)$'
    seba-branches-regexp: '^(master|cord-7.0|seba-1.0)$'
    kind-voltha-regexp: '^(voltha-2.6|voltha-2.7)$'

    # matchs all project repos
    all-projects-regexp: '.*'

    # strictness of version checks
    semver-strict: 0

    # matching repos that should be version tagged by the version-tag job
    version-tag-projects-regexp: '^(?!aether)(xos.*|comac-helm-charts|automation-tools|cord-tester|chameleon|rcord|mcord|ecord|acordion|addressmanager|epc-service|exampleservice|fabric.*|globalxos|hippie-oss|hss_db|hypercache|internetemulator|kubernetes-service|monitoring|olt-service|onos-service|openstack|progran|sdn-controller|simpleexampleservice|templateservice|vEE|vEG|vBBU|venb|vHSS|vMME|vnaas|vPGWC|vPGWU|vrouter|vsg|vsg-hw|vSGW|vSM|vspgwc|vspgwu|vtn-service|vtr|.*-workflow-driver|ves-agent|voltha-bbsim|openolt|sadis-server|kafka-topic-exporter|pyvoltha||plyxproto|voltha-protos|alpine-grpc-base|cordctl|voltha-go|voltha-onos|device-management|cord-workflow.*|voltha-system-tests|openairinterface|omec-.*|bbsim|omci-sim|ponsim|pppoe.*|voltha-api-server|aaa|config|dhcpl2relay|igmp|igmpproxy|kafka-onos|mcast|olt|sadis|vtn|voltha-.*-adapter.*|voltha-lib-go|voltha-python-base|voltha-docker-tools|mn-stratum-siab|ofagent.*|bng|voltctl|openolt-scale-tester|nem-ondemand-proxy|multifabric|openolt-test|omci-lib-go|kind-voltha|mac-learning|goloxi|device-management-interface|bbsim-sadis-server|olttopology|opendm-agent|opendevice-manager|.*-robot)$'

    # List of all repos that contribute to the CORD guide
    cord-guide-projects-regexp: '^(att-workflow-driver|cord-tester|cordctl|exampleservice|fabric|fabric-crossconnect|hippie-oss|kubernetes-service|olt-service|onos-service|openolt|openstack|rcord|simpleexampleservice|vrouter|vtn-service|xos|xos-gui|xos-tosca)$'

    # PyPI related publishing variables
    #
    # Pipe-separated list of directories relative to $WORKSPACE containing
    # python modules to publish to PyPI. Default is current directory which is
    # correct for simple modules
    pypi-module-dirs: '.'

    # Which PyPI index to use. Corresponds to values in ~/.pypirc
    # 'pypi' and 'testpypi' are current options. Default to testpypi, override
    # in the job once testing is completed
    pypi-index: 'testpypi'

    # Commands to run within the root of the checked out repo before running
    # the `python setup.py sdist` to generate the distribution.
    # Primarily used for autogenerating code before publishing a repo
    pypi-prep-commands: ''

    # Name of the Docker repository (usually on DockerHub) that is the
    # destination for images to be pushed to after building.
    # Default is invalid - must be specified on every job.
    docker-repo: 'default-and-invalid'

    # URL of the Docker registry (server running a docker registry) that is the
    # destination for images to be pushed to after building. If set, must
    # include trailing slash as a separator before the repo name.
    # Default is blank, which maps to DockerHub.
    docker-registry: ''

    # for matching files with file-include-regexp
    all-files-regexp: '.*'

    # regex to allow docs-only patchsets w/version bumps to skip code-level
    # tests.  Have to also ignore the commit message on negative match,
    # per: https://issues.jenkins-ci.org/browse/JENKINS-19891
    code-files-regexp: '^(?!docs|VERSION|\/COMMIT_MSG).*$'
    api-test-files-regexp: '^(?!docs|VERSION|\/COMMIT_MSG|Jenkinsfile-*).*$'

    # siab helm-charts
    siab-projects-regexp: '^(xos-core/.*|xos-profiles/seba-services/.*|xos-profiles/base-kubernetes/.*|xos-profiles/ponsim-pod/.*|workflows/att-workflow/.*|voltha/.*|onos/.*|mininet/.*|configs/seba-ponsim.yaml)$'

    # Optionally allow JUnit results to be empty when test framework is set up,
    # but no tests exist. Default behavior is to fail when test results are
    # empty. Also will not vote if no test output exists - good for repos where
    # tests or test output generation may not yet exist.
    junit-allow-empty-results: false

    # Allow xunit to not vote if no test files exist. Default is true because
    # jUnit is the more commonly supported output format.
    xunit-skip-if-no-test-files: true

    # Unit test targets
    # List of targets to run when testing a patchset, run with make or similar
    # defaults to just 'test', multiple targets should be space separated
    unit-test-targets: 'test'

    # whether to "keep going" on multiple tests if one fails
    # maps to the `-k` option passed to make in make-unit.yaml
    unit-test-keep-going: false

    # golang specific variables
    # dest-gopath handles checking out patchsets and putting them into a GOPATH
    # This portion of the path should be included: `$GOPATH/src/<dest-gopath>/<project>"
    # If blank, golang related variables won't be set
    dest-gopath: ''

    # github organization
    # Specifies the github organization to operate on.  Default is blank which
    # may either be invalid, or specify that gerrit should be used instead.
    # Currently used with: github-release
    github-organization: ''

    # release targets
    # List of targets run when creating a software release, run with make or
    # similar. Default is "release", multiple targets may be space separated
    # (when using make).
    release-targets: 'release'

    # artifact glob
    # Shell glob expression used to select which files are included as binaries
    # in a release.
    # Currently used with: github-release
    artifact-glob: ''

    # JDK distribution to use
    # Give the version of the JDK to use when building
    # Parameter is used with `update-java-alternatives --set <jdk-distribution>`
    jdk-distribution: 'java-11-amazon-corretto'

    # skip directories
    # Used to skip directories in supported tests
    skip-dirs: ''

    # maintainers
    # Used to notify users in supported tests
    maintainers: ''

    # karaf-home
    # Use to grab the logs or onos-diagnostics
    karaf-home: 'apache-karaf-4.2.14'

    # maven version
    # Have to setup JAVA_HOME correctly if we upgrade to mvn36
    maven-version: mvn33

# [EOF]
