- job-group:
name: '{project-name}-ci-jobs'
- # This job group contains all the recommended jobs that should be deployed
- # for any project ci.
-
jjb-version: 1.6.2
jobs:
- job-group:
name: '{project-name}-github-ci-jobs'
- # This job group contains all the recommended jobs that should be deployed
- # for any project ci that is using github.
-
jjb-version: 1.6.2
jobs:
- github-jjb-merge
- github-jjb-verify
-
- job-group:
name: '{project-name}-packer-jobs'
- # This job group contains all the recommended jobs that should be deployed
- # for any project ci that is using packer.
-
- packer-version: 1.0.2
+ packer-version: 1.1.1
jobs:
- gerrit-packer-merge
- job-group:
name: '{project-name}-github-packer-jobs'
- # This job group contains all the recommended jobs that should be deployed
- # for any project ci that is using packer.
-
- packer-version: 1.0.2
+ packer-version: 1.1.1
jobs:
- github-packer-merge
- lf_jjb_deploy_job: &lf_jjb_deploy_job
name: lf-jjb-deploy-job
- # Deploy jobs to jenkins-sandbox system via code review comment
- #
- # This job checks out the current code review patch and then runs a
- # `jenkins-jobs update` to push a patch defined by the comment.
- #
- # Comment Trigger: jjb-deploy JOB_NAME
- #
- # JOB_NAME can include the * wildcard character to push multiple jobs
- # matching the pattern. For example `jjb-deploy builder-jjb-*`` will push
- # all builder-jjb-* jobs to the sandbox system.
- #
- # Required parameters:
- #
- # :build-node: The node to run build on.
- # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
- # be configured in defaults.yaml)
- #
- # Optional parameters:
- #
- # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
- # :gerrit_jjb_deploy_job_triggers: Override Gerrit Triggers.
-
######################
# Default parameters #
######################
- lf_jjb_merge: &lf_jjb_merge
name: lf-jjb-merge
- # JJB Merge job runs `jenkins-jobs update` to update production job configuration
- #
- # Required parameters:
- #
- # :build-node: The node to run build on.
- # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
- # be configured in defaults.yaml)
- # :mvn-settings: The name of settings file containing credentials for
- # the project.
- #
- # Optional parameters:
- #
- # :branch: Git branch to fetch for the build. (default: master)
- # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
- # :build-timeout: Timeout in seconds before aborting build. (default: 10)
- # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
- # :stream: Keyword that can be used to represent a release code-name.
- # Often the same as the branch. (default: master)
- # :submodule-recursive: Whether to checkout submodules recursively.
- # (default: true)
- #
- # :gerrit_merge_triggers: Override Gerrit Triggers.
- # :gerrit_trigger_file_paths: Override file paths which can be used to
- # filter which file modifications will trigger a build.
- # (default defined by lf_jjb_common)
-
######################
# Default parameters #
######################
- lf_jjb_verify: &lf_jjb_verify
name: lf-jjb-verify
- # JJB Verify job runs `jenkins-jobs test` to validate JJB syntax
- #
- # Required parameters:
- #
- # :build-node: The node to run build on.
- # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
- # be configured in defaults.yaml)
- # :mvn-settings: The name of settings file containing credentials for
- # the project.
- #
- # Optional parameters:
- #
- # :branch: Git branch to fetch for the build. (default: master)
- # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
- # :build-timeout: Timeout in seconds before aborting build. (default: 10)
- # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
- # :stream: Keyword that can be used to represent a release code-name.
- # Often the same as the branch. (default: master)
- # :submodule-recursive: Whether to checkout submodules recursively.
- # (default: true)
- #
- # :gerrit_verify_triggers: Override Gerrit Triggers.
- # :gerrit_trigger_file_paths: Override file paths which can be used to
- # filter which file modifications will trigger a build.
- # (default defined by lf_jjb_common)
-
######################
# Default parameters #
######################
- lf_packer_merge: &lf_packer_merge
name: lf-packer-merge
- # Packer Merge job runs `packer build` to build system images in the cloud.
- #
- # Required parameters:
- #
- # :build-node: The node to run build on.
- # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
- # be configured in defaults.yaml)
- # :mvn-settings: The name of settings file containing credentials for
- # the project.
- # :platforms: Platform or distribution to build. Typically json file
- # found in the packer/vars directory. (Example: centos)
- # :template: System template to build. Typically shell script found in
- # the packer/provision directory. (Example: java-builder)
- #
- # Optional parameters:
- #
- # :branch: Git branch to fetch for the build. (default: master)
- # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
- # :build-timeout: Timeout in seconds before aborting build. (default: 10)
- # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
- # :packer-cloud-settings: Name of settings file containing credentials
- # for the cloud that packer will build on. (default: packer-cloud-env)
- # :packer-version: Version of packer to install / use in build. (default: 1.0.2)
- # :stream: Keyword that can be used to represent a release code-name.
- # Often the same as the branch. (default: master)
- # :submodule-recursive: Whether to checkout submodules recursively.
- # (default: true)
- #
- # :gerrit_verify_triggers: Override Gerrit Triggers.
-
######################
# Default parameters #
######################
- lf_packer_verify: &lf_packer_verify
name: lf-packer-verify
- # Packer Verify job runs `packer validate` to verify packer configuration.
- #
- # Required parameters:
- #
- # :build-node: The node to run build on.
- # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
- # be configured in defaults.yaml)
- # :mvn-settings: The name of settings file containing credentials for
- # the project.
- #
- # Optional parameters:
- #
- # :branch: Git branch to fetch for the build. (default: master)
- # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
- # :build-timeout: Timeout in seconds before aborting build. (default: 10)
- # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
- # :packer-cloud-settings: Name of settings file containing credentials
- # for the cloud that packer will build on. (default: packer-cloud-env)
- # :packer-version: Version of packer to install / use in build. (default: 1.0.2)
- # :stream: Keyword that can be used to represent a release code-name.
- # Often the same as the branch. (default: master)
- # :submodule-recursive: Whether to checkout submodules recursively.
- # (default: true)
- #
- # :gerrit_verify_triggers: Override Gerrit Triggers.
- # :gerrit_trigger_file_paths: Override file paths which can be used to
- # filter which file modifications will trigger a build.
-
######################
# Default parameters #
######################
- builder:
name: lf-fetch-dependent-patches
- # Fetches all patches provided via comment trigger
- #
- # This macro will fetch all patches provided via comment trigger and will
- # create a list of projects from those patches via environment variable
- # called DEPENDENCY_BUILD_ORDER which can be used if necessary to build
- # projects in the specified order. The order is determined by first patch
- # instance for a project in the patch list.
builders:
- shell: !include-raw: ../shell/gerrit-fetch-dependencies.sh
- inject:
- builder:
name: lf-infra-create-netrc
- # Macro to create a ~/.netrc file from a Maven settings.xml
- # Parameters:
- # {server-id} The id of a server as defined in settings.xml
builders:
- inject:
properties-content: 'SERVER_ID={server-id}'
- builder:
name: lf-infra-docker-login
- # Login into a custom hosted docker registry and / or docker.io
- #
- # The Jenkins system should have the following global variables defined
- #
- # DOCKER_REGISTRY : Optional
- # The DNS address of the registry (IP or FQDN)
- # ex: nexus3.example.com
- #
- # REGISTRY_PORTS : Required if DOCKER_REGISTRY is set
- # Space separated listing of the registry ports to login
- # to
- # ex: 10001 10002 10003 10004
- #
- # DOCKERHUB_EMAIL : Optional
- # If this variable is set then an attempt to login to
- # DockerHub (docker.io) will be also made. It should be
- # set to the email address for the credentials that will
- # get looked up. Only _one_ credential will ever be found
- # in the maven settings file for DockerHub
builders:
- lf-provide-maven-settings:
global-settings-file: '{global-settings-file}'
- builder:
name: lf-infra-gpg-verify-git-signature
- # Verify gpg signature of the latest commit message in $WORKSPACE
- #
- # This command assumes that $WORKSPACE is a git repo.
- #
# TODO: Verify signature after downloading users public key from a locally
# created repository instead of the public keymesh. This requires a process
# in place to get ODL developers public keys into a local repository without
- builder:
name: lf-infra-deploy-maven-file
- # Deploy files to a repository.
- #
- # The builder requires passing the following parameters
- # REPO_ID: Repository ID
- # GROUP_ID: Group ID of the repository
- # UPLOAD_FILES_PATH: Path to directory containing one or more files
builders:
- lf-maven-install:
mvn-version: '{mvn-version}'
- builder:
name: lf-maven-install
- # call maven-target builder with a goal of --version to force Jenkins to
- # install the needed maven version
builders:
# Create a $HOME/.wgetrc to make the Maven download quiet.
- shell: 'echo "quiet=on" > "$HOME/.wgetrc"'
- builder:
name: lf-provide-maven-settings
- # Push a global settings and user settings maven files
builders:
- config-file-provider:
files:
- builder:
name: lf-pip-install
- # Call pip install to install packages into a virtualenv
- # The first package listed in PIP_PACKAGES is used as the virtualenv name.
builders:
- inject:
properties-content: PIP_PACKAGES={pip-packages}
- builder:
name: lf-provide-maven-settings-cleanup
- # Clear maven settings files after we are done using them
builders:
- shell: |
#!/bin/bash
- parameter:
name: lf-infra-maven-parameters
parameters:
+ - string:
+ name: M2_HOME
+ # Sets an env var for shell scripts to be able to call the dynamically
+ # installed maven without having to calculate the M2_HOME themselves.
+ default: '/w/tools/hudson.tasks.Maven_MavenInstallation/{mvn-version}'
+ description: 'Maven selector to be used by shell scripts'
- string:
name: MAVEN_OPTS
default: '{mvn-opts}'
- parameter:
name: lf-infra-node-parameters
- # Parameters for NodeJS
parameters:
- string:
name: NODE_DIR
- parameter:
name: lf-infra-tox-parameters
- # Useful parameters when working with TOX
- # https://tox.readthedocs.io/
parameters:
- string:
name: TOX_DIR