# BUILDERS #
############
+- builder:
+ name: lf-fetch-dependent-patches
+ builders:
+ - shell: !include-raw: ../shell/gerrit-fetch-dependencies.sh
+ - inject:
+ properties-file: $WORKSPACE/.dependency.properties
+
- 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}'
settings-file: '{settings-file}'
- inject:
properties-content: |
+ MAVEN_REPO_URL={maven-repo-url}
REPO_ID={repo-id}
GROUP_ID={group-id}
- UPLOAD_FILES_PATH={files-dir}
+ UPLOAD_FILES_PATH={upload-files-dir}
- shell: !include-raw-escape:
- ../shell/lftools-install.sh
- ../shell/common-variables.sh
- 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:
- file-id: '{settings-file}'
variable: 'SETTINGS_FILE'
+- builder:
+ name: lf-pip-install
+ builders:
+ - inject:
+ properties-content: PIP_PACKAGES={pip-packages}
+ - shell: !include-raw-escape: ../shell/pip-install.sh
+
- builder:
name: lf-provide-maven-settings-cleanup
- # Clear maven settings files after we are done using them
builders:
- shell: |
#!/bin/bash
# DO NOT fail build if any of the above lines fail.
exit 0
+- builder:
+ name: lf-rtd-trigger-build
+ builders:
+ - inject:
+ properties-content: RTD_PROJECT={rtd-project}
+ - shell: !include-raw-escape: ../shell/rtd-trigger-build.sh
+
+- builder:
+ name: lf-rtd-verify
+ builders:
+ - inject:
+ properties-content: DOC_DIR={doc-dir}
+ - shell: !include-raw-escape:
+ - ../shell/tox-install.sh
+ - ../shell/rtd-verify.sh
+
##############
# PARAMETERS #
##############
- 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}'
job is triggered by Gerrit.
- string:
name: GERRIT_REFSPEC
- default: ''
+ default: 'refs/heads/{branch}'
description: |
Parameter to identify a refspec when pulling from Gerrit.
Note that Gerrit will override this parameter automatically if a
job is triggered by Gerrit.
+ - string:
+ name: LFTOOLS_VERSION
+ default: '{lftools-version}'
+ description: |
+ Version of lftools to install. Can be a specific version like
+ '0.6.0' or a PEP-440 definition.
+ https://www.python.org/dev/peps/pep-0440/
+ For example '<1.0.0' or '>=1.0.0,<2.0.0'.
+- parameter:
+ name: lf-infra-node-parameters
+ parameters:
+ - string:
+ name: NODE_DIR
+ default: '{node-dir}'
+ description: Path to a Node project directory.
+ - string:
+ name: NODE_VERSION
+ default: '{node-version}'
+ description: Version of NodeJS to install.
- parameter:
name: lf-infra-tox-parameters
- # Useful parameters when working with TOX
- # https://tox.readthedocs.io/
parameters:
- string:
name: TOX_DIR
# PUBLISHERS #
##############
+- publisher:
+ name: lf-jacoco-report
+ publishers:
+ - jacoco:
+ exec-pattern: "**/**.exec"
+ class-pattern: "**/classes"
+ source-pattern: "**/src/main/java"
+ exclusion-pattern: "**/gen/**,**/generated-sources/**,**/yang-gen**,**/pax/**"
+ status-update: true
+ targets:
+ - branch:
+ healthy: 10
+ unhealthy: 20
+ - method:
+ healthy: 50
+ unhealthy: 40
+
- publisher:
name: lf-infra-publish
# lf-infra macro to finish up a build.