Configuration

defaults.yaml

This file lives in the ci-management repo typically under the path jjb/defaults.yaml. The purpose of this file is to store default variable values used by global-jjb templates.

Required

jenkins-ssh-credential:

The name of the Jenkins Credential to use for ssh connections. (ex: jenkins-ssh)

lftools-version:

Version of lftools to install. Can be a specific version like ‘0.6.1’ or a PEP-440 definition For example <1.0.0 or >=1.0.0,<2.0.0.

mvn-site-id:

Maven Server ID from settings.xml containing the credentials to push to a Maven site repository.

mvn-staging-id:

Maven Server ID from settings.xml containing the credentials to push to a Maven staging repository.

Gerrit required parameters:

gerrit-server-name:

The name of the Gerrit Server as defined in Gerrit Trigger global configuration. (ex: Primary)

GitHub required parameters:

git-url:

Set this to the base URL of your GitHub repo. In general this should be https://github.com. If you are using GitHub Enterprise, or some other GitHub-style system, then it should be whatever your installation base URL is. This sets a job property that GitHub Pull Request Builder requires to work. Note that this is the web url to your project: (eg. https://github.com/$ORG/$PROJECT)

git-clone-url:

This is the clone prefix used by GitHub jobs. Set this to either the same base url as git-url, or to ‘git@github.com:’ including the trailing ‘:’. Determined by your clone method (https or git).

github-org:

The name of the GitHub organization interpolated into the scm config.

github_pr_org:

The name of the GitHub organization. All members of this organization will be able to trigger jobs.

github_pr_allowlist:

List of GitHub members you wish to be able to trigger jobs.

github_pr_admin_list:

List of GitHub members that will have admin privileges on the jobs.

Example Gerrit Infra:

- defaults:
    name: global

    # lf-infra defaults
    jenkins-ssh-credential: jenkins-ssh
    gerrit-server-name: OpenDaylight
    lftools-version: '<1.0.0'
    mvn-site-id: opendaylight-site
    mvn-staging-id: opendaylight-staging

Example GitHub Infra:

- defaults:
    name: global

    # lf-infra defaults
    jenkins-ssh-credential: jenkins-ssh
    github-org: lfit
    github_pr_allowlist:
      - jpwku
      - tykeal
      - zxiiro
    github_pr_admin_list:
      - tykeal
    lftools-version: '<1.0.0'
    mvn-site-id: opendaylight-site
    mvn-staging-id: opendaylight-staging

Jenkins Files

global-jjb makes use of the Jenkins Config File Provider plugin to provide some default configurations for certain tools. This section details the files to define in Jenkins’ Managed Files configuration (eg: https://jenkins.example.org/configfiles/index).

npmrc

This file contains default npmrc configuration and lives in $HOME/.npmrc. Documentation for npmrc is available via the npm project.

Required:

This file MUST exist. An empty file is acceptable if a proxy is not available for the project.

type:

Custom file

Create a Custom file with contents:

registry = https://nexus.opendaylight.org/content/repositories/npmjs/

clouds-yaml

Needed by openstack client and packer to fetch OpenStack credentials and configuration. This file is OpenStack’s clouds.yaml file.

Optional:

Needed for jobs that use openstack client. packer if building against OpenStack infra.

type:

Custom file

Create a Custom file with contents:

clouds:
vex:
 auth:
   project_name: OS_PROJECT_NAME
   username: OS_USERNAME
   password: OS_PASSWORD
   auth_url: 'https://auth.vexxhost.net/v3/'
   user_domain_name: Default
   project_domain_name: Default
 region_name: ca-ymq-1

Warning

If using packer 1.3.0 make sure that the clouds.yaml profile configuration is NOT configured. Using profile causes packer to look for another file called clouds-public.yaml for configuration.

pipconf

This file contains default configuration for the python-pip tool and lives in $HOME/.config/pip/pip.conf. Documentation for pip.conf is available via the pip project.

Required:

This file MUST exist. An empty file is acceptable if a proxy is not available for the project.

type:

Custom file

Create a Custom file with contents:

[global]
timeout = 60
index-url = https://nexus3.opendaylight.org/repository/PyPi/simple

jjbini

This file contains the Jenkins Job Builder configuration for CI Jobs.

Required:

This file MUST exist.

type:

Custom file

Create a Custom file with contents:

[job_builder]
ignore_cache=True
keep_descriptions=False
include_path=.:scripts:~/git/
recursive=True

[jenkins]
user=jenkins-jobbuilder
password=1234567890abcdef1234567890abcdef
url=https://jenkins.example.org
query_plugins_info=False

[production]
user=jenkins-jobbuilder
password=1234567890abcdef1234567890abcdef
url=https://jenkins.example.org
query_plugins_info=False

[sandbox]
user=jenkins-jobbuilder
password=1234567890abcdef1234567890abcdef
url=https://jenkins.example.org/sandbox
query_plugins_info=False

The last 2 sections are for the jenkins-cfg job use, they should match the silo names for the respective Jenkins systems, typically production and sandbox.

jenkins-log-archives-settings

See lf-infra-ship-logs for usage. If not archiving logs then keep this file with default settings, global-jjb needs the file to exist to function.

Requires a credential named ‘logs’ of type ‘Username and Password’ created in the Jenkins Credentials system.

  1. Add Server Credentials

  2. Set ServerId to logs

  3. Set Credentials to the logs user created in the Credentials System

Required:

This file MUST exist if using log archiving.

type:

Maven settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
</settings>

Note

This example is the default boilerplate generated by Jenkins with the comments stripped out. We can also use the default generated by Jenkins without modifying it.

packer-cloud-env

Cloud environment configuration variables for Packer jobs. These can contain credentials and configuration for whichever clouds packer jobs are using.

Required:

This file MUST exist to use packer jobs.

type:

Json file

{
  "cloud_auth_url": "https://auth.vexxhost.net/v3/",
  "cloud_tenant": "TENANT_ID",
  "cloud_user": "CLOUD_USERNAME",
  "cloud_pass": "CLOUD_PASSWORD",
  "cloud_network": "CLOUD_NETWORK",
  "ssh_proxy_host": ""
}

Jenkins CI Jobs

jenkins-cfg-merge

This job manages Jenkins Global configuration. Refer to the CI Documentation for job configuration details.

Log Archiving

The logs account requires a Maven Settings file created called jenkins-log-archives-settings with a server ID of logs containing the credentials for the logs user in Nexus.