jjb: 32-64 integration pipeline
[lttng-ci.git] / pipelines / integration / lttng-tools-_version_-32-64_testsuite.groovy.inc
diff --git a/pipelines/integration/lttng-tools-_version_-32-64_testsuite.groovy.inc b/pipelines/integration/lttng-tools-_version_-32-64_testsuite.groovy.inc
new file mode 100644 (file)
index 0000000..c6490d3
--- /dev/null
@@ -0,0 +1,318 @@
+#!groovy
+
+{% set test_job_name = 'integration_lttng-tools-32-64_test' %}
+
+pipeline {
+       agent none
+
+       /* Global options for the pipeline */
+       options {
+               preserveStashes()
+               buildDiscarder(logRotator(numToKeepStr: '5'))
+               disableConcurrentBuilds()
+               timestamps()
+               skipDefaultCheckout()
+       }
+
+       triggers {
+               pollSCM('@hourly')
+       }
+
+       parameters {
+           string(name: 'LTTNG_TOOLS_GIT_REPO', defaultValue: 'https://github.com/lttng/lttng-tools', description: 'The http git repo to be cloned for the lttng-tools project')
+           string(name: 'LTTNG_TOOLS_GIT_BRANCH', defaultValue: '{{ version }}', description: 'The {{ version }} equivalent branch to be checkout-ed')
+       }
+
+       stages {
+               /*
+                * i386 artefact cannot be reused for 2 reason.
+                * The first one is that the amd64 and i386 node do not run the same distro and libc version.
+                * The second, is that we need to ensure that the lttng-ust used
+                * is the same for the amd64 and i386 and that for now we do not
+                * have this guarantee since we used 2 different jobs
+                */
+               stage('Checkout all sources') {
+                       agent { label 'bionic-amd64' }
+                       steps {
+                               dir("src/userspace-rcu") {
+                                       checkout([$class: 'GitSCM', branches: [[name: '{{ urcu_version }}']], extensions: [], gitTool: 'Default', userRemoteConfigs: [[url: 'https://github.com/urcu/userspace-rcu']]])
+                               }
+                               dir("src/lttng-modules") {
+                                       checkout([$class: 'GitSCM', branches: [[name: '{{ version }}']], extensions: [], gitTool: 'Default', userRemoteConfigs: [[url: 'https://github.com/lttng/lttng-modules']]])
+                               }
+                               dir("src/lttng-ust") {
+                                       checkout([$class: 'GitSCM', branches: [[name: '{{ version }}']], extensions: [], gitTool: 'Default', userRemoteConfigs: [[url: 'https://github.com/lttng/lttng-ust']]])
+                               }
+                               dir("src/lttng-tools") {
+                                       checkout([$class: 'GitSCM', branches: [[name: "${params.LTTNG_TOOLS_GIT_BRANCH}"]], extensions: [], gitTool: 'Default', userRemoteConfigs: [[url: "${params.LTTNG_TOOLS_GIT_REPO}"]]])
+                               }
+                               stash name: 'dep-sources', includes: 'src/userspace-rcu/**,src/lttng-ust/**'
+                               stash name: 'modules-sources', includes: 'src/lttng-modules/**'
+                               stash name: 'tools-sources', includes: 'src/lttng-tools/**,'
+                       }
+               }
+
+               stage('Build') {
+                       parallel {
+                               stage('Build amd64 deps') {
+                                       agent { label 'bionic-amd64' }
+                                       stages {
+                                               stage('Clean workspace') {
+                                                       steps {
+                                                               cleanWs()
+                                                       }
+                                               }
+
+                                               stage('Build') {
+                                                       environment {
+                                                               BASEDIR_64 = "$WORKSPACE/deps-64"
+                                                               BASEDIR_BUILD_64 = "$BASEDIR_64/build"
+                                                               INCLUDE_DIR_64 = "$BASEDIR_BUILD_64/include"
+                                                               CPPFLAGS = "-I$INCLUDE_DIR_64"
+                                                               LDFLAGS = "-L$BASEDIR_BUILD_64/lib"
+                                                               PKG_CONFIG_PATH = "$BASEDIR_BUILD_64/lib/pkgconfig"
+                                                               LD_LIBRARY_PATH ="$BASEDIR_BUILD_64/lib:$LD_LIBRARY_PATH"
+                                                               PATH ="$PATH:$BASEDIR_64/bin"
+                                                               PREFIX = "/build"
+                                                               JAVA_HOME="/usr/lib/jvm/default-java"
+                                                               CLASSPATH="/usr/share/java/log4j-api.jar:/usr/share/java/log4j-core.jar:/usr/share/java/log4j-1.2.jar"
+                                                               PYTHON3="python3"
+                                                               PYTHON_CONFIG="python3-config"
+                                                               CXXFLAGS="-g -O0"
+                                                               CFLAGS="-g -O0"
+                                                       }
+                                                       steps {
+                                                               unstash name: 'dep-sources'
+
+                                                               /* Prevent non existent include dir warnings */
+                                                               sh 'mkdir -p $INCLUDE_DIR_64'
+
+                                                               dir("src/userspace-rcu") {
+                                                                       sh '''
+                                                                               ./bootstrap
+                                                                               ./configure --prefix="$PREFIX"
+                                                                               make -j"$(nproc)" V=1
+                                                                               make install DESTDIR="$WORKSPACE"
+                                                                       '''
+
+                                                                       sh '''
+                                                                               find "$WORKSPACE/build/lib" -name "*.so" -exec chrpath --delete {} \\;
+                                                                               find "$WORKSPACE/build/lib" -name "*.la" -exec rm -vf {} \\;
+                                                                       '''
+                                                               }
+
+                                                               /* Move the artifact of the recently build project to the deps file and remove the "build" directory to prevent `make install` shenanigans for lttng-ust 2.12 */
+                                                               sh '''
+                                                                       cp -rv build/ $BASEDIR_64
+                                                                       rm -rv build/
+                                                               '''
+
+                                                               dir("src/lttng-ust") {
+                                                                       sh '''
+                                                                               ./bootstrap
+                                                                               ./configure --prefix="$PREFIX" --enable-java-agent-all --enable-jni-interface --enable-python-agent
+                                                                               make -j"$(nproc)" V=1
+                                                                               make install DESTDIR="$WORKSPACE"
+                                                                       '''
+
+                                                                       sh '''
+                                                                               find "$WORKSPACE/build/lib" -name "*.so" -exec chrpath --delete {} \\;
+                                                                               find "$WORKSPACE/build/lib" -name "*.la" -exec rm -vf {} \\;
+                                                                       '''
+                                                               }
+
+                                                               /* Move the artifact of the recently build project to the deps file and remove the "build" directory to prevent `make install` shenanigans for lttng-ust 2.12 */
+                                                               sh '''
+                                                                       cp -rv build/ $BASEDIR_64
+                                                                       rm -rv build/
+                                                               '''
+
+                                                               stash name: "amd64-deps-lttng-tools", includes: 'deps-64/**'
+                                                       }
+                                               }
+                                       }
+                               }
+                               stage('Build i386, including lttng-tools') {
+                                       agent { label 'bionic-i386' }
+                                       stages {
+                                               stage('Clean workspace') {
+                                                       steps {
+                                                               cleanWs()
+                                                       }
+                                               }
+
+                                               stage('Build') {
+                                                       environment {
+                                                               BASEDIR_32 = "$WORKSPACE/deps-32"
+                                                               BASEDIR_BUILD_32 = "$BASEDIR_32/build"
+                                                               INCLUDE_DIR_32 = "$BASEDIR_BUILD_32/include"
+                                                               CPPFLAGS = "-I$INCLUDE_DIR_32"
+                                                               LDFLAGS = "-L$BASEDIR_BUILD_32/lib"
+                                                               PKG_CONFIG_PATH = "$BASEDIR_BUILD_32/lib/pkgconfig"
+                                                               LD_LIBRARY_PATH ="$BASEDIR_BUILD_32/lib"
+                                                               PATH ="$PATH:$BASEDIR_32/bin"
+                                                               PREFIX = "/build"
+                                                               CXXFLAGS="-g -O0"
+                                                               CFLAGS="-g -O0"
+                                                       }
+                                                       steps {
+                                                               unstash name: 'dep-sources'
+                                                               unstash name: 'tools-sources'
+
+                                                               /* Prevent non existent include dir warnings */
+                                                               sh 'mkdir -p $INCLUDE_DIR_32'
+
+                                                               dir("src/userspace-rcu") {
+                                                                       sh '''
+                                                                               ./bootstrap
+                                                                               ./configure --prefix="$PREFIX"
+                                                                               make -j"$(nproc)" V=1
+                                                                               make install DESTDIR="$WORKSPACE"
+                                                                       '''
+
+                                                                       sh '''
+                                                                               find "$WORKSPACE/build/lib" -name "*.so" -exec chrpath --delete {} \\;
+                                                                               find "$WORKSPACE/build/lib" -name "*.la" -exec rm -vf {} \\;
+                                                                       '''
+                                                               }
+
+                                                               /* Move the artifact of the recently build project to the deps file and remove the "build" directory to prevent `make install` shenanigans for lttng-ust 2.12 */
+                                                               sh '''
+                                                                       cp -rv build/ $BASEDIR_32
+                                                                       rm -rv build/
+                                                               '''
+
+
+                                                               dir("src/lttng-ust") {
+                                                                       sh '''
+                                                                               ./bootstrap
+                                                                               ./configure --prefix="$PREFIX"
+                                                                               make V=1
+                                                                               make install DESTDIR="$WORKSPACE"
+                                                                       '''
+
+                                                                       sh '''
+                                                                               find "$WORKSPACE/build/lib" -name "*.so" -exec chrpath --delete {} \\;
+                                                                               find "$WORKSPACE/build/lib" -name "*.la" -exec rm -vf {} \\;
+                                                                       '''
+                                                               }
+
+                                                               /* Move the artifact of the recently build project to the deps file and remove the "build" directory to prevent `make install` shenanigans for lttng-ust 2.12 */
+                                                               sh '''
+                                                                       cp -rv build/ $BASEDIR_32
+                                                                       rm -rv build/
+                                                               '''
+
+                                                               dir("src/lttng-tools") {
+                                                                       sh '''
+                                                                               ./bootstrap
+                                                                               ./configure --prefix="$PREFIX"
+                                                                               make V=1
+                                                                               make install DESTDIR="$WORKSPACE"
+                                                                       '''
+                                                                       sh '''
+                                                                               find "$WORKSPACE/build/bin" -type f -perm -0500 -exec chrpath --delete {} \\;
+                                                                               find "$WORKSPACE/build/lib" -name "*.so" -exec chrpath --delete {} \\;
+                                                                               find "$WORKSPACE/build/lib" -name "*.la" -exec rm -vf {} \\;
+                                                                       '''
+                                                               }
+
+                                                               /* Move the artifact of the recently build project to the deps file and remove the "build" directory to prevent `make install` shenanigans for lttng-ust 2.12 */
+                                                               sh '''
+                                                                       cp -rv build/ $BASEDIR_32
+                                                                       rm -rv build/
+                                                               '''
+
+                                                               stash name: "i386-deps-lttng-tools", includes: 'deps-32/**'
+
+                                                               {% if version != 'stable-2.12' %}
+                                                               /* Save the i386 ld_preloaded libraries for sessiond pausing */
+                                                               stash name: "i386-deps-sessiond-notification-pause-lib", includes: 'src/lttng-tools/tests/regression/tools/notification/.libs/libpause_sessiond.so'
+                                                               {% endif %}
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+               stage('Object store') {
+                       agent { label 'bionic-amd64' }
+                       environment {
+                               S3_PREFIX = "s3://jenkins/32-64-bit-integration"
+                       }
+                       steps {
+                               cleanWs()
+                               dir('tar/sources') {
+                                       unstash name: "modules-sources"
+                                       unstash name: "tools-sources"
+                               }
+                               dir('tar/deps') {
+                                       unstash name: "i386-deps-lttng-tools"
+                                       unstash name: "amd64-deps-lttng-tools"
+                               }
+                               dir('tar/testing-overlay/sessiond') {
+                                       {% if version == 'stable-2.12' %}
+                                       sh '''
+                                       echo "No testing overlay" > testing_overlay.txt
+                                       '''
+                                       {% else %}
+                                       unstash name: "i386-deps-sessiond-notification-pause-lib"
+                                       {% endif %}
+                               }
+
+                               dir('tar') {
+                                       sh '''
+                                               echo $(pwd)
+                                               ls -lah ./
+                                               tar -cf "$WORKSPACE/$BUILD_TAG.tar.bz2" -I pbzip2 .
+                                       '''
+                               }
+
+                               sh '''
+                                       echo "# Setup endpoint
+                                       host_base = obj.internal.efficios.com
+                                       host_bucket = obj.internal.efficios.com
+                                       bucket_location = us-east-1
+                                       use_https = True
+
+                                       # Setup access keys
+                                       access_key = jenkins
+                                       secret_key = echo123456
+
+                                       # Enable S3 v4 signature APIs
+                                       signature_v2 = False" > "$WORKSPACE/.s3cfg"
+                                       s3cmd -c "$WORKSPACE/.s3cfg" put "$WORKSPACE/$BUILD_TAG.tar.bz2" "$S3_PREFIX/"
+                               '''
+                       }
+
+               }
+               stage('Testing') {
+                       parallel {
+                               stage('canary') {
+                                       agent none
+                                       steps {
+                                               build job: '{{ test_job_name }}', parameters: [string(name: 'ARTIFACT_ID', value: "${BUILD_TAG}.tar.bz2"), string(name: 'TEST_TYPE', value: 'canary'), string(name: 'BT_VERSION', value: "{{ babelversion }}")]
+                                       }
+                               }
+                               stage('CLI 32-bit') {
+                                       agent none
+                                       steps {
+                                               build job: '{{ test_job_name }}', parameters: [string(name: 'ARTIFACT_ID', value: "${BUILD_TAG}.tar.bz2"), string(name: 'TEST_TYPE', value: '32bit-cli'), string(name: 'BT_VERSION', value: "{{ babelversion }}")]
+                                       }
+                               }
+                               stage('sessiond 32-bit') {
+                                       agent none
+                                       steps {
+                                               build job: '{{ test_job_name }}', parameters: [string(name: 'ARTIFACT_ID', value: "${BUILD_TAG}.tar.bz2"), string(name: 'TEST_TYPE', value: '32bit-sessiond'), string(name: 'BT_VERSION', value: "{{ babelversion }}")]
+                                       }
+                               }
+                               stage('relayd 32-bit') {
+                                       agent none
+                                       steps {
+                                               build job: '{{ test_job_name }}', parameters: [string(name: 'ARTIFACT_ID', value: "${BUILD_TAG}.tar.bz2"), string(name: 'TEST_TYPE', value: '32bit-relayd'), string(name: 'BT_VERSION', value: "{{ babelversion }}")]
+                                       }
+                               }
+                       }
+               }
+       }
+}
This page took 0.028225 seconds and 4 git commands to generate.