DISTROS=noble jammy centos9 windows
# build tentacle on:
# default: noble jammy centos9 windows
- # crimson: centos9
# debug: centos9
- conditional-step:
condition-kind: regex-match
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=noble jammy centos9 windows
- - project: 'ceph-dev'
- predefined-parameters: |
- BRANCH=${{GIT_BRANCH}}
- FORCE=True
- DISTROS=centos9
- FLAVOR=crimson-debug
- ARCHS=x86_64
- project: 'ceph-dev'
predefined-parameters: |
BRANCH=${{GIT_BRANCH}}
ARCHS=x86_64
# build main on:
# default: noble jammy centos9 windows
- # crimson-debug: centos9
- # crimson-release: centos9
# debug: centos9
- conditional-step:
condition-kind: regex-match
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=noble jammy centos9 windows
- - project: 'ceph-dev'
- predefined-parameters: |
- BRANCH=${{GIT_BRANCH}}
- FORCE=True
- DISTROS=centos9
- FLAVOR=crimson-debug
- ARCHS=x86_64
- - project: 'ceph-dev'
- predefined-parameters: |
- BRANCH=${{GIT_BRANCH}}
- FORCE=True
- DISTROS=centos9
- FLAVOR=crimson-release
- ARCHS=x86_64
- project: 'ceph-dev'
predefined-parameters: |
BRANCH=${{GIT_BRANCH}}
DISTROS=noble jammy centos9 windows
# build tentacle on:
# default: noble jammy centos9 windows
- # crimson: centos9
# debug: centos9
- conditional-step:
condition-kind: regex-match
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=noble jammy centos9 windows
- - project: 'ceph-dev-new'
- predefined-parameters: |
- BRANCH=${{GIT_BRANCH}}
- FORCE=True
- DISTROS=centos9
- FLAVOR=crimson-debug
- ARCHS=x86_64
- project: 'ceph-dev-new'
predefined-parameters: |
BRANCH=${{GIT_BRANCH}}
- conditional-step:
condition-kind: shell
condition-command: |
- echo "${{GIT_BRANCH}}" | grep -v '\(reef\|squid\|tentacle\|centos9-only\|crimson-only\)'
+ echo "${{GIT_BRANCH}}" | grep -v '\(reef\|squid\|tentacle\|centos9-only\)'
on-evaluation-failure: dont-run
steps:
- shell:
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=noble jammy centos9 windows
- - trigger-builds:
- - project: 'ceph-dev-new'
- predefined-parameters: |
- BRANCH=${{GIT_BRANCH}}
- FORCE=True
- DISTROS=centos9
- FLAVOR=crimson-debug
- ARCHS=x86_64
- trigger-builds:
- project: 'ceph-dev-new'
predefined-parameters: |
DISTROS=centos9
FLAVOR=debug
ARCHS=x86_64
- # build only centos9, default and debug. no crimson
+ # build only centos9, default and debug
- conditional-step:
condition-kind: regex-match
regex: .*centos9-only.*
DISTROS=centos9
FLAVOR=debug
ARCHS=x86_64
- # Build only the `crimson` flavour, don't waste resources on the default one.
- # Useful for the crimson's bug-hunt at Sepia
- # crimson-debug: centos9
- # crimson-release: centos9
- - conditional-step:
- condition-kind: regex-match
- regex: .*crimson-only.*
- label: '${{GIT_BRANCH}}'
- on-evaluation-failure: dont-run
- steps:
- - shell:
- !include-raw-verbatim:
- - ../../../scripts/build_utils.sh
- - ../../build/notify
- - trigger-builds:
- - project: 'ceph-dev-new'
- predefined-parameters: |
- BRANCH=${{GIT_BRANCH}}
- FORCE=True
- DISTROS=centos9
- FLAVOR=crimson-debug
- ARCHS=x86_64
- - trigger-builds:
- - project: 'ceph-dev-new'
- predefined-parameters: |
- BRANCH=${{GIT_BRANCH}}
- FORCE=True
- DISTROS=centos9
- FLAVOR=crimson-release
- ARCHS=x86_64
# sccache
- conditional-step:
condition-kind: regex-match
choices:
- default
- debug
- - crimson-debug
- - crimson-release
default: "default"
- description: "Type of Ceph build, choices are: crimson-debug, crimson-release, debug, default. Defaults to: 'default'"
+ description: "Type of Ceph build, choices are: default, debug. Defaults to: 'default'"
- string:
name: CI_CONTAINER
}
axes {
name 'FLAVOR'
- values 'default', 'crimson-release', 'crimson-debug', 'debug'
+ values 'default', 'debug'
}
}
- // crimson is only supported on centos9 x86_64
// debug flavor is currently only supported on centos9 x86_64
excludes {
exclude {
axis {
name 'FLAVOR'
- values 'crimson-release', 'crimson-debug', 'debug'
+ values 'debug'
}
axis {
name 'DIST'
exclude {
axis {
name 'FLAVOR'
- values 'crimson-release', 'crimson-debug', 'debug'
+ values 'debug'
}
axis {
name 'ARCH'
sh """#!/bin/bash
set -ex
echo > .env
- [[ $FLAVOR == crimson* ]] && echo "WITH_CRIMSON=true" >> .env || true
cd dist/ceph
python3 src/script/build-with-container.py --env-file=${env.WORKSPACE}/.env --image-repo=${env.CEPH_BUILDER_IMAGE} --tag=${ceph_builder_tag} --image-variant=packages -d ${DIST} -e build-container
podman tag ${env.CEPH_BUILDER_IMAGE}:${ceph_builder_tag} ${env.CEPH_BUILDER_IMAGE}:${ceph_builder_tag_short}
case "debug":
ceph_extra_cmake_args += " -DCMAKE_BUILD_TYPE=Debug"
break
- case "crimson-debug":
- deb_build_profiles = "pkg.ceph.crimson"
- ceph_extra_cmake_args += " -DCMAKE_BUILD_TYPE=Debug"
- break
- case "crimson-release":
- deb_build_profiles = "pkg.ceph.crimson";
- break
default:
println "FLAVOR=${env.FLAVOR} is invalid"
assert false
if ( env.SCCACHE == "true" ) rpmbuild_args += " -R--with=sccache"
if ( env.DWZ == "false" ) rpmbuild_args += " -R--without=dwz"
if ( env.FLAVOR == "default" ) rpmbuild_args += " -R--with=tcmalloc"
- if ( env.FLAVOR.startsWith("crimson") ) rpmbuild_args += " -R--with=crimson"
bwc_command = "${bwc_command}${rpmbuild_args} -e rpm"
} else if ( env.DIST =~ /suse|sles/ ) {
throw new Exception("bwc not implemented for ${env.DIST}")
- string:
name: FLAVORS
- description: "A list of flavors to build. Available options are: default, crimson-release, crimson-debug, debug"
+ description: "A list of flavors to build. Available options are: default, debug"
default: "default"
- bool:
name: FLAVOR
choices:
- default
- - crimson-debug
- - crimson-release
- debug
default: "default"
- description: "Type of Ceph build, choices are: crimson-debug, crimson-release, default, debug. Defaults to: 'default'"
+ description: "Type of Ceph build, choices are: default, debug. Defaults to: 'default'"
- bool:
name: CI_CONTAINER
choices:
- default
- debug
- - crimson-debug
- - crimson-release
default: "default"
- description: "Type of Ceph build, choices are: crimson-debug, crimson-release, debug, default. Defaults to: 'default'"
+ description: "Type of Ceph build, choices are: default, debug. Defaults to: 'default'"
- bool:
name: CI_CONTAINER
break
fi
done
- if test {osd-flavor} = "crimson-release" ; then
+ if test {osd-flavor} = "crimson" ; then
export WITH_CRIMSON=true
# TODO use clang-10 on ubuntu/focal
timeout 7200 src/script/run-make.sh \
- project:
name: ceph-perf
osd-flavor:
- - crimson-debug
- - crimson-release
- classic
+ - crimson
jobs:
- ceph-perf-{osd-flavor}
|CEPH-BUILD-JOB|Which Jenkins job to trigger. Only ceph-dev-pipeline supports the options below.|ceph-dev-pipeline, ceph-dev-new|`ceph-dev-pipeline`|
|DISTROS|Space-sparated list of Linux distributions to build for|focal, jammy, noble, centos9, windows|Depends on keywords in branch name|
|ARCHS|Space-separated list of architectures to build on|x86_64, arm64|`x86_64 arm64`|
-|FLAVORS|Crimson or non-Crimson or debug|default, debug, crimson-debug, crimson-release|`default`|
+|FLAVORS|default or debug|default, debug|`default`|
|CI-COMPILE|Compile binaries and packages[^1]|Boolean|`true`|
|CI-CONTAINER|Build a dev container using the packages built|Boolean|`true`|
|DWZ|Use [DWZ](https://sourceware.org/dwz/) to make debuginfo packages smaller|Boolean|`true` when using ceph-dev-new<br>`false` when using ceph-dev-pipeline[^2]|
params << params[0].clone()
params[-1]['ARCHS'] = 'x86_64'
params[-1]['DISTROS'] = 'centos9'
- params[-1]['FLAVOR'] = 'crimson-debug debug'
+ params[-1]['FLAVOR'] = 'debug'
} else {
params[0]['ARCHS'] += ' arm64'
- params[0]['FLAVOR'] += ' crimson-debug'
- params[1]['FLAVOR'] += ' debug'
+ params[0]['FLAVOR'] += ' debug'
}
break
case ~/.*centos9-only.*/:
} else {
params[0]['FLAVOR'] += ' debug'
}
- case ~/.*crimson-only.*/:
- params[0]['ARCHS'] = 'x86_64'
- params[0]['DISTROS'] = 'centos9'
- if ( !singleSet ) {
- params << params[0].clone()
- params[0]['FLAVOR'] = 'crimson-debug'
- params[1]['FLAVOR'] = 'crimson-release'
- } else {
- params[0]['FLAVOR'] = 'crimson-debug crimson-release'
- }
break
default:
if ( !singleSet ) {
params << params[0].clone()
params[-1]['ARCHS'] = 'x86_64'
params[-1]['DISTROS'] = 'centos9'
- params[-1]['FLAVOR'] = 'crimson-debug debug'
+ params[-1]['FLAVOR'] = 'debug'
} else {
- params[0]['FLAVOR'] += ' crimson-debug'
- params[1]['FLAVOR'] += ' debug'
+ params[0]['FLAVOR'] += ' debug'
}
}
if ( singleSet ) {
debug)
CEPH_EXTRA_CMAKE_ARGS+=" -DCMAKE_BUILD_TYPE=Debug"
;;
- crimson-debug)
- CEPH_EXTRA_RPMBUILD_ARGS="--with crimson"
- DEB_BUILD_PROFILES="pkg.ceph.crimson"
- CEPH_EXTRA_CMAKE_ARGS+=" -DCMAKE_BUILD_TYPE=Debug"
- ;;
- crimson-release)
- CEPH_EXTRA_RPMBUILD_ARGS="--with crimson"
- DEB_BUILD_PROFILES="pkg.ceph.crimson"
- ;;
*)
echo "unknown FLAVOR: ${FLAVOR}" >&2
exit 1
extra_cmake_args() {
# statically link against libstdc++ for building new releases on old distros
- if [ "${FLAVOR}" = "crimson-debug" ] || [ "${FLAVOR}" = "crimson-release" ] ; then
- # seastar's exception hack assums dynamic linkage against libgcc. as
- # otherwise _Unwind_RaiseException will conflict with its counterpart
- # defined in libgcc_eh.a, when the linker comes into play. and more
- # importantly, _Unwind_RaiseException() in seastar will not be able
- # to call the one implemented by GCC.
- echo "-DWITH_STATIC_LIBSTDCXX=OFF"
- elif use_ppa; then
+ if use_ppa; then
echo "-DWITH_STATIC_LIBSTDCXX=ON"
fi
}
sed -e 's/@//g' < ceph.spec.in > $DIR/ceph.spec
- # enable more build depends required by build flavor(crimson)
- case "${FLAVOR}" in
- crimson-debug)
- sed -i -e 's/%bcond_with crimson/%bcond_without crimson/g' $DIR/ceph.spec
- ;;
- crimson-release)
- sed -i -e 's/%bcond_with crimson/%bcond_without crimson/g' $DIR/ceph.spec
- ;;
- esac
-
# Make sure we have all the rpm macros installed and at the latest version
# before installing the dependencies, python3-devel requires the
# python-rpm-macro we use for identifying the python related dependencies