# This file holds all gerrit build verifications https://jenkins.osmocom.org/jenkins/view/Jenkins-Gerrit/.
# One can simply add a gerrit job by adding project's repository to repos list.
#
# Overview of jobs involved in the pipeline:
# https://osmocom.org/projects/osmocom-servers/wiki/Jenkins_gerrit-verifications_Pipeline
#
# How it works:
# * Two jobs get added for each repository:
# gerrit-{repos}
# gerrit-{repos}-build
# * The gerrit-{repos} job is a pipeline that runs the gerrit-{repos}-build job
# and other jobs (linting, building debian packages, ...). The purpose of
# this job is to reduce the amount of comments (and resulting mails) in
# gerrit coming from the jenkins build verification. If each job ran
# separately without this pipeline job, they would each generate mails.
# The gerrit-{repos} job gets triggered from gerrit whenever a new patch to
# test is available. It passes the GERRIT_BRANCH and GERRIT_REFSPEC variables
# from gerrit to the jobs called in the pipeline.
# * The gerrit-{repos}-build job runs contrib/jenkins.sh in docker in a matrix.
# By default the matrix results in only one job, however for some projects we
# use the matrix to build for multiple CPU architectures (x86_64, arm) or use
# it to build multiple configurations of the same project (see osmo-bts).
#
# NOTE: after updating the job with Jenkins Job Builder as usual, check if a
# new pipeline script was generated and approve it here:
# https://jenkins.osmocom.org/jenkins/scriptApproval/
# This used to be necessary when changing the pipeline script, adding new
# projects etc. But it seems to get auto-approved now.
- project:
name: gerrit
# following default values can be overridden by each repo
disabled: false
concurrent: true
# axes related defaults
slave_axis: !!python/tuple [osmocom-gerrit]
a1_name: a1
a1: !!python/tuple [default]
a2_name: a2
a2: !!python/tuple [default]
a3_name: a3
a3: !!python/tuple [default]
a4_name: a4
a4: !!python/tuple [default]
combination_filter: ''
sequential: false
# most common build invocation
# SYS_PTRACE is needed for ASAN (https://github.com/google/sanitizers/issues/764)
# Documentation for variables (keep in sync!):
# https://osmocom.org/projects/osmocom-servers/wiki/Jenkins_build_verification_jobs
docker_run: |
docker run --rm=true \
--cap-add SYS_PTRACE \
-e ASCIIDOC_WARNINGS_CHECK="1" \
-e HOME=/build \
-e JOB_NAME="$JOB_NAME" \
-e MAKE=make \
-e OSMOPY_DEBUG_TCP_SOCKETS="1" \
-e OSMO_GSM_MANUALS_DIR="/opt/osmo-gsm-manuals" \
-e PARALLEL_MAKE="$PARALLEL_MAKE" \
-e WITH_MANUALS="1" \
-w /build -i -u build \
-v "$PWD:/build" \
docker_run_ccache: |
CCACHE_DIR="$HOME/ccache/gerrit-verifications"
mkdir -p "$CCACHE_DIR"
chown osmocom-build:osmocom-build "$CCACHE_DIR"
docker run --rm=true \
--cap-add SYS_PTRACE \
-e ASCIIDOC_WARNINGS_CHECK="1" \
-e HOME=/build \
-e JOB_NAME="$JOB_NAME" \
-e MAKE=make \
-e OSMOPY_DEBUG_TCP_SOCKETS="1" \
-e OSMO_GSM_MANUALS_DIR="/opt/osmo-gsm-manuals" \
-e PARALLEL_MAKE="$PARALLEL_MAKE" \
-e WITH_MANUALS="1" \
-w /build -i -u build \
-v "$PWD:/build" \
\
-e CCACHE_DIR="/ccache" \
-e PATH="/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
-v "$CCACHE_DIR:/ccache" \
docker_img: '$USER/debian-bookworm-build'
docker_img_erlang: '$USER/debian-bookworm-erlang'
docker_img_android: 'registry.osmocom.org/osmocom-build/debian-bookworm-android'
timeout_cmd: '/usr/bin/timeout 30m'
cmd: '{docker_run_ccache} {docker_img} {timeout_cmd} /build/contrib/jenkins.sh'
gerrit_url: 'ssh://jenkins@gerrit.osmocom.org:29418'
repos_url: '{gerrit_url}/{repos}'
gerrit_project: '{repos}'
# Which jobs to run in the pipeline
pipeline_build: true
pipeline_lint: true
pipeline_binpkgs: "debian:10 debian:12"
# in alphabetical order
repos:
- android-apdu-proxy:
pipeline_binpkgs: ""
concurrent: false # might cause problems with shared cache
cmd: |
ANDROID_CACHE="$HOME/android-cache/gerrit-verifications/android"
GRADLE_CACHE="$HOME/android-cache/gerrit-verifications/gradle"
mkdir -p "$ANDROID_CACHE" "$GRADLE_CACHE"
docker pull {docker_img_android}
{docker_run} \
-v "$ANDROID_CACHE":/build/.android \
-v "$GRADLE_CACHE":/build/.gradle \
{docker_img_android} {timeout_cmd} contrib/jenkins.sh
- asn1c:
pipeline_binpkgs: ""
pipeline_lint: false
- cellmgr-ng:
pipeline_binpkgs: "debian:10 debian:12"
- docker-playground:
pipeline_build: false
pipeline_binpkgs: ""
- libasn1c
- libgtpnl
- libosmo-abis
- libosmo-gprs
- libosmo-netif
- libosmo-pfcp
- libosmo-sigtran
- libosmocore:
slave_axis: !!python/tuple [io_uring] # OS#6405
a1_name: arch
a1: !!python/tuple [arm-none-eabi, amd64]
combination_filter: '!(arch=="arm-none-eabi" && label=="FreeBSD_amd64")'
cmd: '{docker_run_ccache} {docker_img} {timeout_cmd} /build/contrib/jenkins_arch.sh "$arch"'
pipeline_binpkgs: "centos:7 debian:10 debian:12" # centos7: SYS#6760
- libsmpp34
- libtelnet:
pipeline_binpkgs: ""
- libusrp
- openggsn:
a1_name: GTP
a1: !!python/tuple [--enable-gtp-linux,--disable-gtp-linux]
concurrent: false
cmd: '{timeout_cmd} ./contrib/jenkins.sh'
- osmo-bsc
- osmo-bsc-nat
- osmo-bts:
slave_axis: !!python/tuple [osmocom-gerrit, raspbian]
a1_name: FIRMWARE_VERSION
a1: !!python/tuple [master, femtobts_v2.7, superfemto_v2.4, superfemto_v3.0.1pre, superfemto_v3.1, superfemto_v5.1, v2017.01, litecell15, oc2g, oc2g-next]
a2_name: BTS_MODEL
a2: !!python/tuple [sysmo, oct, trx, oct+trx, lc15, oc2g]
a3_name: WITH_MANUALS
a3: !!python/tuple ["1", "0"]
combination_filter: >
(FIRMWARE_VERSION == "master" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(FIRMWARE_VERSION == "master" && BTS_MODEL == "trx" && WITH_MANUALS == "0" && label == "raspbian") ||
(FIRMWARE_VERSION == "femtobts_v2.7" && BTS_MODEL == "sysmo" && WITH_MANUALS == "1" && label == "osmocom-gerrit") ||
(FIRMWARE_VERSION == "superfemto_v2.4" && BTS_MODEL == "sysmo" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(FIRMWARE_VERSION == "superfemto_v3.0.1pre" && BTS_MODEL == "sysmo" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(FIRMWARE_VERSION == "superfemto_v3.1" && BTS_MODEL == "sysmo" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(FIRMWARE_VERSION == "superfemto_v5.1" && BTS_MODEL == "sysmo" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(FIRMWARE_VERSION == "v2017.01" && BTS_MODEL == "lc15" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(FIRMWARE_VERSION == "litecell15" && BTS_MODEL == "lc15" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(FIRMWARE_VERSION == "oc2g" && BTS_MODEL == "oc2g" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(FIRMWARE_VERSION == "oc2g-next" && BTS_MODEL == "oc2g" && WITH_MANUALS == "0" && label == "osmocom-gerrit")
concurrent: false
cmd: |
DOCKER_IMG="{docker_img}"
case "$(arch)" in
arm*|aarch64)
DOCKER_IMG="$DOCKER_IMG-arm"
SETARCH_CMD="setarch linux32"
;;
esac
{docker_run_ccache} \
-e FIRMWARE_VERSION="$FIRMWARE_VERSION" \
-e WITH_MANUALS="$WITH_MANUALS" \
"$DOCKER_IMG" {timeout_cmd} $SETARCH_CMD /build/contrib/jenkins_bts_model.sh "$BTS_MODEL"
- osmo_dia2gsup:
repos_url: '{gerrit_url}/erlang/{repos}'
gerrit_project: 'erlang/{repos}'
cmd: '{docker_run} {docker_img_erlang} {timeout_cmd} /build/contrib/jenkins.sh'
pipeline_binpkgs: "debian:11 debian:12"
- osmo-epdg:
repos_url: '{gerrit_url}/erlang/{repos}'
gerrit_project: 'erlang/{repos}'
pipeline_binpkgs: "debian:12"
a2_name: JOB_TYPE
a2: !!python/tuple ["build", "manuals"]
cmd: |
case "$JOB_TYPE" in
build)
{docker_run} {docker_img_erlang} {timeout_cmd} /build/contrib/jenkins.sh
;;
manuals)
{docker_run} {docker_img} {timeout_cmd} /build/contrib/jenkins_manuals.sh
;;
esac
- osmo-s1gw:
repos_url: '{gerrit_url}/erlang/{repos}'
gerrit_project: 'erlang/{repos}'
pipeline_binpkgs: "debian:12"
cmd: '{docker_run} {docker_img_erlang} {timeout_cmd} /build/contrib/jenkins.sh'
- osmo-e1-hardware:
a2_name: JOB_TYPE
a2: !!python/tuple ["firmware", "gateware", "manuals", "software"]
cmd: |
DOCKER_IMG="{docker_img}"
case "$JOB_TYPE" in
firmware|gateware|manuals)
DOCKER_IMG="registry.osmocom.org/$USER/fpga-build"
docker pull "$DOCKER_IMG"
;;
esac
{docker_run} \
-e JOB_TYPE="$JOB_TYPE" \
"$DOCKER_IMG" \
{timeout_cmd} /build/contrib/jenkins.sh
pipeline_binpkgs: ""
- osmo-ci:
pipeline_build: false
pipeline_binpkgs: ""
- osmo-ggsn:
a1_name: GTP
a1: !!python/tuple [--enable-gtp-linux,--disable-gtp-linux]
a2_name: WITH_MANUALS
a2: !!python/tuple ["1", "0"]
combination_filter: >
(GTP == "--enable-gtp-linux" && WITH_MANUALS == "0") ||
(GTP == "--disable-gtp-linux" && WITH_MANUALS == "1")
cmd: |
{docker_run_ccache} \
-e GTP="$GTP" \
-e WITH_MANUALS="$WITH_MANUALS" \
{docker_img} {timeout_cmd} /build/contrib/jenkins.sh
- osmo-gsm-manuals:
pipeline_binpkgs: "debian:10 debian:12"
- osmo_gsup:
repos_url: '{gerrit_url}/erlang/{repos}'
gerrit_project: 'erlang/{repos}'
cmd: '{docker_run_ccache} {docker_img_erlang} {timeout_cmd} /build/contrib/jenkins.sh'
pipeline_binpkgs: ""
- osmo-hlr
- osmo-iuh
- osmo-mgw
- osmo-msc:
a1_name: IU
a1: !!python/tuple [--enable-iu, --disable-iu]
a2_name: WITH_MANUALS
a2: !!python/tuple ["1", "0"]
combination_filter: >
(IU == "--enable-iu" && WITH_MANUALS == "1") ||
(IU == "--disable-iu" && WITH_MANUALS == "0")
cmd: |
{docker_run_ccache} \
-e IU="$IU" \
-e WITH_MANUALS="$WITH_MANUALS" \
{docker_img} {timeout_cmd} /build/contrib/jenkins.sh
- osmo-pcap:
pipeline_binpkgs: "centos:7 debian:10 debian:12" # centos7: SYS#6760
- osmo-pcu:
slave_axis: !!python/tuple [osmocom-gerrit, raspbian]
a1_name: FIRMWARE_VERSION
a1: !!python/tuple [master, v2017.01, litecell15, oc2g]
a2_name: with_vty
a2: !!python/tuple [True, False]
a3_name: with_dsp
a3: !!python/tuple [sysmo, lc15, oc2g, none]
a4_name: WITH_MANUALS
a4: !!python/tuple ["1", "0"]
combination_filter: >
(with_vty == "True" && with_dsp == "sysmo" && FIRMWARE_VERSION=="master" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="master" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="v2017.01" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="litecell15" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(with_vty == "True" && with_dsp == "oc2g" && FIRMWARE_VERSION=="oc2g" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(with_vty == "False" && with_dsp == "none" && FIRMWARE_VERSION=="master" && WITH_MANUALS == "1" && label == "osmocom-gerrit") ||
(with_vty == "False" && with_dsp == "none" && FIRMWARE_VERSION=="master" && WITH_MANUALS == "0" && label == "raspbian")
cmd: |
DOCKER_IMG="{docker_img}"
case "$(arch)" in
arm*|aarch64)
DOCKER_IMG="$DOCKER_IMG-arm"
SETARCH_CMD="setarch linux32"
;;
esac
{docker_run_ccache} \
-e FIRMWARE_VERSION="$FIRMWARE_VERSION" \
-e with_vty="$with_vty" \
-e with_dsp="$with_dsp" \
-e WITH_MANUALS="$WITH_MANUALS" \
"$DOCKER_IMG" {timeout_cmd} $SETARCH_CMD /build/contrib/jenkins.sh
- osmo-python-tests:
repos_url: '{gerrit_url}/python/{repos}'
gerrit_project: 'python/{repos}'
pipeline_binpkgs: "debian:10 debian:12"
- pyosmocom:
repos_url: '{gerrit_url}/python/{repos}'
gerrit_project: 'python/{repos}'
pipeline_binpkgs: "debian:12"
concurrent: false
slave_axis: !!python/tuple [simtester,osmocom-gerrit]
a2_name: JOB_TYPE
a2: !!python/tuple ["test", "pylint", "docs", "pysim"]
combination_filter: >
(JOB_TYPE == "test" && label == "osmocom-gerrit") ||
(JOB_TYPE == "pylint" && label == "osmocom-gerrit") ||
(JOB_TYPE == "docs" && label == "osmocom-gerrit") ||
(JOB_TYPE == "pysim" && label == "simtester")
cmd: |
case "$JOB_TYPE" in
"pysim")
{timeout_cmd} ./contrib/jenkins.sh
;;
*)
{docker_run} \
-e JOB_TYPE="$JOB_TYPE" \
{docker_img} \
{timeout_cmd} /build/contrib/jenkins.sh
;;
esac
- osmo-sgsn:
a1_name: IU
a1: !!python/tuple [--enable-iu, --disable-iu]
a2_name: WITH_MANUALS
a2: !!python/tuple ["1", "0"]
combination_filter: >
(IU == "--enable-iu" && WITH_MANUALS == "1") ||
(IU == "--disable-iu" && WITH_MANUALS == "0")
cmd: |
{docker_run_ccache} \
-e IU="$IU" \
-e WITH_MANUALS="$WITH_MANUALS" \
{docker_img} {timeout_cmd} /build/contrib/jenkins.sh
- osmo_ss7:
repos_url: '{gerrit_url}/erlang/{repos}'
gerrit_project: 'erlang/{repos}'
cmd: '{docker_run} {docker_img_erlang} {timeout_cmd} /build/contrib/jenkins.sh'
pipeline_binpkgs: ""
- osmo-sip-connector
- osmo-trx:
slave_axis: !!python/tuple [osmocom-gerrit,raspbian]
a1_name: INSTR
a1: !!python/tuple [--with-sse, --without-sse, --with-neon, --with-neon-vfpv4]
a2_name: WITH_MANUALS
a2: !!python/tuple ["1", "0"]
combination_filter: >
(INSTR == "--without-sse" && WITH_MANUALS == "1" && label == "osmocom-gerrit") ||
(INSTR == "--with-sse" && WITH_MANUALS == "0" && label == "osmocom-gerrit") ||
(INSTR == "--with-neon" && WITH_MANUALS == "0" && label == "raspbian") ||
(INSTR == "--with-neon-vfpv4" && WITH_MANUALS == "0" && label == "raspbian")
cmd: |
DOCKER_IMG="{docker_img}"
case "$(arch)" in
arm*|aarch64)
DOCKER_IMG="$DOCKER_IMG-arm"
SETARCH_CMD="setarch linux32"
;;
esac
{docker_run_ccache} \
-e INSTR="$INSTR" \
-e WITH_MANUALS="$WITH_MANUALS" \
"$DOCKER_IMG" {timeout_cmd} $SETARCH_CMD /build/contrib/jenkins.sh
- osmocom-bb:
pipeline_binpkgs: "debian:12"
- osmo-tetra:
pipeline_binpkgs: ""
- osmo-sysmon:
pipeline_binpkgs: "debian:10 debian:12"
- osmo-remsim
- simtrace2
- osmo-opencm3-projects:
cmd: '{docker_run} {docker_img} {timeout_cmd} /build/contrib/jenkins.sh'
pipeline_binpkgs: ""
- osmo-asf4-dfu:
pipeline_binpkgs: ""
- osmo-ccid-firmware:
pipeline_binpkgs: ""
- osmo-e1d
- osmo-cbc
- osmo-e1-recorder:
pipeline_binpkgs: ""
- gapk:
pipeline_binpkgs: "debian:12"
- osmo-uecups
- osmo-el2tpd:
pipeline_binpkgs: ""
- osmo-smlc
- osmo-gbproxy
- osmo-hnodeb
- osmo-hnbgw:
a1_name: PFCP
a1: !!python/tuple ["1", "0"]
a2_name: WITH_MANUALS
a2: !!python/tuple ["1", "0"]
a3_name: NFTABLES
a3: !!python/tuple ["1", "0"]
combination_filter: >
(PFCP == "1" && WITH_MANUALS == "1" && NFTABLES == "1") ||
(PFCP == "0" && WITH_MANUALS == "0" && NFTABLES == "0")
cmd: |
{docker_run_ccache} \
-e PFCP="$PFCP" \
-e WITH_MANUALS="$WITH_MANUALS" \
-e NFTABLES="$NFTABLES" \
{docker_img} {timeout_cmd} /build/contrib/jenkins.sh
- osmo-upf:
pipeline_binpkgs: "debian:11 debian:12"
- pysim:
concurrent: false
slave_axis: !!python/tuple [simtester,osmocom-gerrit]
a2_name: JOB_TYPE
a2: !!python/tuple ["test", "distcheck", "pylint", "docs"]
combination_filter: >
(JOB_TYPE == "test" && label == "simtester") ||
(JOB_TYPE == "distcheck" && label == "osmocom-gerrit") ||
(JOB_TYPE == "pylint" && label == "osmocom-gerrit") ||
(JOB_TYPE == "docs" && label == "osmocom-gerrit")
cmd: |
case "$JOB_TYPE" in
"test")
{timeout_cmd} ./contrib/jenkins.sh
;;
*)
{docker_run} \
-e JOB_TYPE="$JOB_TYPE" \
{docker_img} \
{timeout_cmd} /build/contrib/jenkins.sh
;;
esac
pipeline_binpkgs: ""
- osmo-ttcn3-hacks:
slave_axis: !!python/tuple [ttcn3]
cmd: |
docker run \
--rm \
-v "$PWD:/build" \
"registry.osmocom.org/osmocom-build/debian-bookworm-titan" \
{timeout_cmd} \
sh -e -x -c '
useradd --uid=1000 build
for i in /osmo-ttcn3-hacks/deps/*/; do
if ! [ -e /build/deps/"$(basename "$i")" ]; then
ln -s "$i" /build/deps/
fi
done
su build -c "make -C /build compile"
'
pipeline_binpkgs: ""
- dahdi-tools:
pipeline_lint: false
pipeline_binpkgs: ""
- upf-benchmark:
pipeline_binpkgs: ""
jobs:
- 'gerrit-{repos}'
- 'gerrit-{repos}-build'
- job-template:
name: 'gerrit-{repos}'
project-type: pipeline
concurrent: true
parameters:
- bool:
name: PIPELINE_BUILD
description: Enable the build job (runs contrib/jenkins.sh)
default: '{obj:pipeline_build}'
- bool:
name: PIPELINE_LINT
description: Enable the lint job
default: '{obj:pipeline_lint}'
- string:
name: REPO_URL
description: Clone URL, to be passed to jobs started in the pipeline
default: '{obj:repos_url}'
- string:
name: PIPELINE_BINPKGS
description: |
Enable the binpkgs job (build deb/rpm packages) for the given space
separated distributions. Empty list disables the binpkgs job. The
distributions must have binary packages in the osmocom:master
repository.
default: '{obj:pipeline_binpkgs}'
dsl: |
def run_job(display_name, job_name, comment_type=null, distro=null) {{
try {{
echo "pipeline_${{display_name}}: running job ${{job_name}}"
// IMPORTANT: Keep gerrit-verifications-parameters.yaml.inc in sync
// with the list of parameters here, and make sure all jobs passed
// to run_job() include the .yaml.inc file. (OS#6261)
build job: job_name, parameters: [
string(name: "COMMENT_TYPE", value: comment_type),
string(name: "DISTRO", value: distro),
string(name: "GERRIT_BRANCH", value: "${{env.GERRIT_BRANCH}}"),
string(name: "GERRIT_CHANGE_NUMBER", value: "${{env.GERRIT_CHANGE_NUMBER}}"),
string(name: "GERRIT_HOST", value: "${{env.GERRIT_HOST}}"),
string(name: "GERRIT_PATCHSET_NUMBER", value: "${{env.GERRIT_PATCHSET_NUMBER}}"),
string(name: "GERRIT_PATCHSET_REVISION", value: "${{env.GERRIT_PATCHSET_REVISION}}"),
string(name: "GERRIT_PATCHSET_UPLOADER_NAME", value: "${{env.GERRIT_PATCHSET_UPLOADER_NAME}}"),
string(name: "GERRIT_PORT", value: "${{env.GERRIT_PORT}}"),
string(name: "GERRIT_PROJECT", value: "${{env.GERRIT_PROJECT}}"),
string(name: "GERRIT_REFSPEC", value: "${{env.GERRIT_REFSPEC}}"),
string(name: "GERRIT_REPO_URL", value: "${{env.REPO_URL}}"),
string(name: "PIPELINE_BUILD_URL", value: "${{env.BUILD_URL}}"),
string(name: "PROJECT_NAME", value: "{repos}"),
]
echo "pipeline_${{display_name}}: SUCCESS"
}} catch (Exception e) {{
echo "pipeline_${{display_name}}: FAILED"
}}
}}
pipeline {{
agent none
stages {{
stage("Verification") {{
parallel {{
// Run the comment job to add the pipeline link to gerrit
stage("Start Comment") {{
steps {{
script {{
run_job("comment_start", "gerrit-verifications-comment", "start")
}}
}}
}}
stage("Build") {{
when {{
expression {{ params.PIPELINE_BUILD }}
}}
steps {{
script {{
run_job("build", "gerrit-{repos}-build")
}}
}}
}}
stage("Lint") {{
when {{
expression {{ params.PIPELINE_LINT }}
}}
steps {{
script {{
run_job("lint", "gerrit-lint")
}}
}}
}}
// Generating binpkgs stages is not possible if we want to run
// them in parallel and not have another job that just waits
// until they complete.
stage("binpkgs-0") {{
when {{
expression {{ params.PIPELINE_BINPKGS.split().size() > 0 }}
}}
steps {{
script {{
distro = params.PIPELINE_BINPKGS.split()[0]
run_job(distro, "gerrit-binpkgs", null, distro)
}}
}}
}}
stage("binpkgs-1") {{
when {{
expression {{ params.PIPELINE_BINPKGS.split().size() > 1 }}
}}
steps {{
script {{
distro = params.PIPELINE_BINPKGS.split()[1]
run_job(distro, "gerrit-binpkgs", null, distro)
}}
}}
}}
stage("binpkgs-2") {{
when {{
expression {{ params.PIPELINE_BINPKGS.split().size() > 2 }}
}}
steps {{
script {{
distro = params.PIPELINE_BINPKGS.split()[2]
run_job(distro, "gerrit-binpkgs", null, distro)
}}
}}
}}
}} // end of parallel
}} // end of Verification stage
// Run the comment job to get successful/failed links and add a
// comment + vote to gerrit
stage("Result Comment") {{
steps {{
script {{
run_job("comment_result", "gerrit-verifications-comment", "result")
}}
}}
}}
}}
}}
disabled: '{obj:disabled}'
retry-count: 3 # scm checkout
properties:
- build-discarder:
days-to-keep: 30
num-to-keep: 1000
description: |
Pipeline of CI for patches sent to
{repos}
Auto-generated using Jenkins Job Builder. DO NOT EDIT MANUALLY!
scm:
- git:
url: '{obj:repos_url}'
credentials-id: d5eda5e9-b59d-44ba-88d2-43473cb6e42d
branches:
- $GERRIT_BRANCH
refspec: $GERRIT_REFSPEC
name:
choosing-strategy: gerrit
wipe-workspace: false
skip-tag: true
submodule:
recursive: true
triggers:
- gerrit:
trigger-on:
- patchset-created-event:
exclude-drafts: true
exclude-no-code-change: true
projects:
- project-compare-type: 'PLAIN'
project-pattern: '{obj:gerrit_project}'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**'
skip-vote:
successful: false
failed: false
unstable: false
notbuilt: false
silent: true # comment + vote is done in gerrit-pipeline-result.yml
escape-quotes: false
server-name: gerrit.osmocom.org
- job-template:
name: 'gerrit-{repos}-build'
project-type: matrix
concurrent: '{obj:concurrent}'
disabled: '{obj:disabled}'
retry-count: 3 # scm checkout
properties:
- build-discarder:
days-to-keep: 30
num-to-keep: 1000
description: |
Build job of CI for patches sent to
{repos}
Auto-generated using Jenkins Job Builder. DO NOT EDIT MANUALLY!
execution-strategy:
sequential: '{obj:sequential}'
combination-filter: |
{obj:combination_filter}
axes:
- axis:
type: slave
name: label
values: '{obj:slave_axis}'
- axis:
type: user-defined
name: '{obj:a1_name}'
values: '{obj:a1}'
- axis:
type: user-defined
name: '{obj:a2_name}'
values: '{obj:a2}'
- axis:
type: user-defined
name: '{obj:a3_name}'
values: '{obj:a3}'
- axis:
type: user-defined
name: '{obj:a4_name}'
values: '{obj:a4}'
scm:
- git:
url: '{obj:repos_url}'
credentials-id: d5eda5e9-b59d-44ba-88d2-43473cb6e42d
branches:
- $GERRIT_BRANCH
refspec: $GERRIT_REFSPEC
name:
choosing-strategy: gerrit
wipe-workspace: false
skip-tag: true
submodule:
recursive: true
parameters:
!include: gerrit-verifications-parameters.yaml.inc
builders:
- shell: '{obj:cmd}'
# Remove workspace on success to free up space
- shell: 'rm -rf "$WORKSPACE"'
publishers:
- warnings:
console-log-parsers:
- 'GNU C Compiler 4 (gcc)'
resolve-relative-paths: true
# vim: expandtab tabstop=2 shiftwidth=2