C/C++ Jobs

Job Templates

CMake Sonar

Sonar job which runs cmake && make then publishes to Sonar.

This job purposely runs on the master branch as there are configuration needed to support multi-branch.

Template Names
  • {project-name}-cmake-sonar

  • gerrit-cmake-sonar

  • github-cmake-sonar

Comment Trigger

run-sonar

Required parameters
build-node

The node to run build on.

jenkins-ssh-credential

Credential to use for SSH. (Configure in defaults.yaml)

sonar-scanner-version

Version of sonar-scanner to install.

sonarcloud-project-key

SonarCloud project key.

sonarcloud-project-organization

SonarCloud project organization.

sonarcloud-api-token

SonarCloud API Token.

Optional parameters
build-days-to-keep

Days to keep build logs in Jenkins. (default: 7)

build-timeout

Timeout in minutes before aborting build. (default: 60)

cmake-opts

Parameters to pass to cmake. (default: ‘’)

cron

Cron schedule when to trigger the job. This parameter also supports multiline input via YAML pipe | character in cases where one may want to provide more than 1 cron timer. (default: @daily’)

git-url

URL clone project from. (default: $GIT_URL/$PROJECT)

install-prefix

CMAKE_INSTALL_PREFIX to use for install. (default: $BUILD_DIR/output)

make-opts

Parameters to pass to make. (default: ‘’)

pre-build

Shell script to run before performing build. Useful for setting up dependencies. (default: ‘’)

submodule-recursive

Whether to checkout submodules recursively. (default: true)

submodule-timeout

Timeout (in minutes) for checkout operation. (default: 10)

submodule-disable

Disable submodule checkout operation. (default: false)

gerrit_sonar_triggers

Override Gerrit Triggers.

CMake Stage

Stage job which runs cmake && make && make install and then packages the project into a tar.xz tarball to produce a release candidate.

Template Names
  • {project-name}-cmake-stage-{stream}

  • gerrit-cmake-stage

  • github-cmake-stage

Comment Trigger

stage-release

Required parameters
build-node

The node to run build on.

jenkins-ssh-credential

Credential to use for SSH. (Configure in defaults.yaml)

nexus-group-id

The Maven style Group ID for the namespace of the project in Nexus.

staging-profile-id

The unique Nexus Staging Profile ID for the project. Contact your infra admin if you do not know it.

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-dir

Directory to build the project in. (default: $WORKSPACE/target)

build-timeout

Timeout in minutes before aborting build. (default: 60)

cmake-opts

Parameters to pass to cmake. (default: ‘’)

git-url

URL clone project from. (default: $GIT_URL/$PROJECT)

install-prefix

CMAKE_INSTALL_PREFIX to use for install. (default: $BUILD_DIR/output)

make-opts

Parameters to pass to make. (default: ‘’)

pre-build

Shell script to run before performing build. Useful for setting up dependencies. (default: ‘’)

stream

Keyword that to represent a release code-name. Often the same as the branch. (default: master)

submodule-recursive

Whether to checkout submodules recursively. (default: true)

submodule-timeout

Timeout (in minutes) for checkout operation. (default: 10)

submodule-disable

Disable submodule checkout operation. (default: false)

version

(default: ‘’) Project version to stage release as. There are 2 methods for using this value:

  1. Defined explicitly here.

  2. Leave this value blank and set /tmp/artifact_version

Use method 2 in conjunction with ‘pre-build’ configuration to generate the artifact_version automatically from files in the project’s repository. For example with pre-build script:

#!/bin/bash
MAJOR_VERSION="$(grep 'set(OCIO_VERSION_MAJOR' CMakeLists.txt | awk '{{print $NF}}' | awk -F')' '{{print $1}}')"
MINOR_VERSION="$(grep 'set(OCIO_VERSION_MINOR' CMakeLists.txt | awk '{{print $NF}}' | awk -F')' '{{print $1}}')"
PATCH_VERSION="$(grep 'set(OCIO_VERSION_PATCH' CMakeLists.txt | awk '{{print $NF}}' | awk -F')' '{{print $1}}')"
echo "${{MAJOR_VERSION}}.${{MINOR_VERSION}}.${{PATCH_VERSION}}" > /tmp/artifact_version

CMake Verify

Verify job which runs cmake && make && make install to test a project build..

Template Names
  • {project-name}-cmake-verify-{stream}

  • gerrit-cmake-verify

  • github-cmake-verify

Comment Trigger

recheck|reverify

Required parameters
build-node

The node to run build on.

jenkins-ssh-credential

Credential to use for SSH. (Configure in defaults.yaml)

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-dir

Directory to build the project in. (default: $WORKSPACE/target)

build-timeout

Timeout in minutes before aborting build. (default: 60)

cmake-opts

Parameters to pass to cmake. (default: ‘’)

git-url

URL clone project from. (default: $GIT_URL/$PROJECT)

install-prefix

CMAKE_INSTALL_PREFIX to use for install. (default: $BUILD_DIR/output)

make-opts

Parameters to pass to make. (default: ‘’)

pre-build

Shell script to run before performing build. Useful for setting up dependencies. (default: ‘’)

stream

Keyword that to represent a release code-name. Often the same as the branch. (default: master)

submodule-recursive

Whether to checkout submodules recursively. (default: true)

submodule-timeout

Timeout (in minutes) for checkout operation. (default: 10)

submodule-disable

Disable submodule checkout operation. (default: false)

gerrit_verify_triggers

Override Gerrit Triggers.

gerrit_trigger_file_paths

Override file paths which to filter which file modifications will trigger a build.