This is an automated email from the ASF dual-hosted git repository. bneradt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/trafficserver-ci.git
The following commit(s) were added to refs/heads/main by this push: new f468483 Convert as many PR builds to cmake as possible (#223) f468483 is described below commit f468483fc2a83c13007e976a03d967772a5368fc Author: Brian Neradt <brian.ner...@gmail.com> AuthorDate: Sat Oct 14 12:12:41 2023 -0500 Convert as many PR builds to cmake as possible (#223) We'll still need a rat target and an -DENABLE_HARDENING=ON feature. But most of the PR builds can be done via cmake now. --- jenkins/github/centos.pipeline | 34 +++++++++++++++++++++++--------- jenkins/github/cmake.pipeline | 4 ++-- jenkins/github/debian.pipeline | 36 ++++++++++++++++++++++++---------- jenkins/github/docs.pipeline | 33 ++++++++++++++++++++++--------- jenkins/github/fedora.pipeline | 33 ++++++++++++++++++++++--------- jenkins/github/freebsd.pipeline | 27 ++++++++++++++++++++------ jenkins/github/osx.pipeline | 28 +++++++++++++++++++++------ jenkins/github/rat.pipeline | 6 +++--- jenkins/github/rocky.pipeline | 8 ++++---- jenkins/github/ubuntu.pipeline | 43 ++++++++++++++++++++++++++++++----------- 10 files changed, 183 insertions(+), 69 deletions(-) diff --git a/jenkins/github/centos.pipeline b/jenkins/github/centos.pipeline index 935168e..5dc9a62 100644 --- a/jenkins/github/centos.pipeline +++ b/jenkins/github/centos.pipeline @@ -47,21 +47,37 @@ pipeline { sh '''#!/bin/bash set -x set -e + source /opt/rh/devtoolset-8/enable - autoreconf -fiv - ./configure --with-openssl=/opt/openssl-quic --enable-experimental-plugins --enable-example-plugins --prefix=/tmp/ats/ --enable-werror --enable-debug --enable-ccache - make -j4 V=1 Q= - make -j 2 check VERBOSE=Y V=1 - make install - /tmp/ats/bin/traffic_server -K -k -R 1 + + # We do not support CMake builds for the 9.x branch. + if [ "${GITHUB_PR_TARGET_BRANCH}" == "9.0.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.1.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.2.x" ] + then + autoreconf -fiv + ./configure --with-openssl=/opt/openssl-quic --enable-experimental-plugins --enable-example-plugins --prefix=/tmp/ats/ --enable-werror --enable-debug --enable-ccache + make -j4 V=1 Q= + make -j 2 check VERBOSE=Y V=1 + make install + /tmp/ats/bin/traffic_server -K -k -R 1 + else + cmake -B cmake-build-release --preset ci -G "Unix Makefiles" -DOPENSSL_ROOT_DIR=/opt/openssl-quic + cmake --build cmake-build-release -v + cmake --install cmake-build-release + pushd cmake-build-release + ctest -j4 --output-on-failure --no-compress-output -T Test + /tmp/ats/bin/traffic_server -K -k -R 1 + popd + fi ''' } } } } - - post { - cleanup { + + post { + cleanup { cleanWs() } } diff --git a/jenkins/github/cmake.pipeline b/jenkins/github/cmake.pipeline index 11f287a..97b00ff 100644 --- a/jenkins/github/cmake.pipeline +++ b/jenkins/github/cmake.pipeline @@ -62,7 +62,7 @@ pipeline { export PATH=/opt/bin:${PATH} cmake -B cmake-build-release -GNinja -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_BUILD_TYPE=Debug -DBUILD_EXPERIMENTAL_PLUGINS=ON -DOPENSSL_ROOT_DIR=/opt/openssl-quic -DCMAKE_INSTALL_PREFIX=/tmp/ats - cmake --build cmake-build-release -j4 -v + cmake --build cmake-build-release -v cmake --install cmake-build-release pushd cmake-build-release ctest -j4 --output-on-failure --no-compress-output -T Test @@ -70,7 +70,7 @@ pipeline { popd cmake -B cmake-build-quiche -GNinja -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DENABLE_QUICHE=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_EXPERIMENTAL_PLUGINS=ON -Dquiche_ROOT=/opt/quiche -DOPENSSL_ROOT_DIR=/opt/boringssl -DCMAKE_INSTALL_PREFIX=/tmp/ats_quiche - cmake --build cmake-build-quiche -j4 -v + cmake --build cmake-build-quiche -v cmake --install cmake-build-quiche pushd cmake-build-quiche ctest -j4 --output-on-failure --no-compress-output -T Test diff --git a/jenkins/github/debian.pipeline b/jenkins/github/debian.pipeline index 8f9e026..ec6a644 100644 --- a/jenkins/github/debian.pipeline +++ b/jenkins/github/debian.pipeline @@ -10,7 +10,7 @@ pipeline { environment { CCACHE_DIR = "/tmp/ccache" CCACHE_BASEDIR = "${WORKSPACE}" - } + } stages { stage('Clone') { steps { @@ -47,20 +47,36 @@ pipeline { sh '''#!/bin/bash set -x set -e - autoreconf -fiv - ./configure --enable-experimental-plugins --enable-example-plugins --prefix=/tmp/ats/ --enable-debug --enable-werror --enable-ccache --enable-hardening - make -j4 V=1 Q= - make -j 2 check VERBOSE=Y V=1 - make install - /tmp/ats/bin/traffic_server -K -k -R 1 + # We do not support CMake builds for the 9.x branch. + # Always run autotools until -DENABLE_HARDENING=ON is implemented. + if [ true -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.0.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.1.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.2.x" ] + then + autoreconf -fiv + ./configure --enable-experimental-plugins --enable-example-plugins --prefix=/tmp/ats/ --enable-debug --enable-werror --enable-ccache --enable-hardening + make -j4 V=1 Q= + make -j 2 check VERBOSE=Y V=1 + make install + /tmp/ats/bin/traffic_server -K -k -R 1 + else + cmake -B cmake-build-release --preset ci -G "Unix Makefiles" -DOPENSSL_ROOT_DIR=/opt/openssl-quic -DENABLE_HARDENING=ON + cmake --build cmake-build-release -v + cmake --install cmake-build-release + pushd cmake-build-release + ctest -j4 --output-on-failure --no-compress-output -T Test + /tmp/ats/bin/traffic_server -K -k -R 1 + popd + fi ''' } } } } - - post { - cleanup { + + post { + cleanup { cleanWs() } } diff --git a/jenkins/github/docs.pipeline b/jenkins/github/docs.pipeline index f3cbe89..f509caf 100644 --- a/jenkins/github/docs.pipeline +++ b/jenkins/github/docs.pipeline @@ -43,6 +43,7 @@ pipeline { dir('src') { sh '''#!/bin/bash set -x + set -e # Skip if nothing in doc has changed INCLUDE_FILES=$(for i in $(git grep literalinclude doc/ | awk '{print $3}'); do basename $i; done | sort -u | paste -sd\\|) echo $INCLUDE_FILES @@ -55,12 +56,17 @@ pipeline { fi sudo chmod -R 777 . || exit 1 - cd doc - pipenv install || exit 1 - tmpfile=/tmp/build_the_docs.$$ + # We do not support CMake builds for the 9.x branch. + if [ "${GITHUB_PR_TARGET_BRANCH}" == "9.0.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.1.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.2.x" ] + then + cd doc + pipenv install || exit 1 - cat << _END_OF_DOC_ > ${tmpfile} + tmpfile=/tmp/build_the_docs.$$ + cat << _END_OF_DOC_ > ${tmpfile} #!/bin/bash set -e set -x @@ -76,11 +82,20 @@ fi make -j4 -e SPHINXOPTS="${sphinxopts}" html _END_OF_DOC_ - chmod 755 ${tmpfile} - echo "Running:" - cat ${tmpfile} - pipenv run ${tmpfile} || exit 1 - rm ${tmpfile} + chmod 755 ${tmpfile} + echo "Running:" + cat ${tmpfile} + pipenv run ${tmpfile} || exit 1 + rm ${tmpfile} + + else + # cmake. Much easier. + cmake -B docs-build -DENABLE_DOCS=ON + cmake --build docs-build --target generate_docs -v + + # The rest of the script expects to be just above the html output directory. + cd docs-build/doc + fi # If we made it here, the doc build ran and succeeded. Let's copy out the # docbuild contents so it can be published. diff --git a/jenkins/github/fedora.pipeline b/jenkins/github/fedora.pipeline index 7b68c44..5e4dc82 100644 --- a/jenkins/github/fedora.pipeline +++ b/jenkins/github/fedora.pipeline @@ -48,16 +48,31 @@ pipeline { set -x set -e - # We don't use c++20 features yet, but we want to make - # sure we can build with the flag set. - export CXXSTD=20 + # We do not support CMake builds for the 9.x branch. + if [ "${GITHUB_PR_TARGET_BRANCH}" == "9.0.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.1.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.2.x" ] + then + # We don't use c++20 features yet, but we want to make + # sure we can build with the flag set. + export CXXSTD=20 - autoreconf -fiv - ./configure --enable-experimental-plugins --enable-example-plugins --prefix=/tmp/ats/ --enable-werror --enable-debug --enable-wccp --enable-ccache - make -j4 V=1 Q= - make -j4 check VERBOSE=Y V=1 - make install - /tmp/ats/bin/traffic_server -K -k -R 1 + autoreconf -fiv + ./configure --enable-experimental-plugins --enable-example-plugins --prefix=/tmp/ats/ --enable-werror --enable-debug --enable-wccp --enable-ccache + make -j4 V=1 Q= + make -j4 check VERBOSE=Y V=1 + make install + /tmp/ats/bin/traffic_server -K -k -R 1 + else + sed -i 's/CMAKE_CXX_STANDARD 17/CMAKE_CXX_STANDARD 20/g' CMakeLists.txt + cmake -B build --preset ci + cmake --build build -v + cmake --install build + pushd build + ctest -j4 --output-on-failure --no-compress-output -T Test + /tmp/ats/bin/traffic_server -K -k -R 1 + popd + fi ''' } } diff --git a/jenkins/github/freebsd.pipeline b/jenkins/github/freebsd.pipeline index 72a4b6c..767f15a 100644 --- a/jenkins/github/freebsd.pipeline +++ b/jenkins/github/freebsd.pipeline @@ -20,16 +20,31 @@ pipeline { steps { echo 'Starting build' dir('src') { - sh('autoreconf -fiv') - sh('./configure --enable-experimental-plugins') - sh('gmake -j3') + sh '''#!/bin/bash + + set -x + set -e + + # We do not support CMake builds for the 9.x branch. + if [ "${GITHUB_PR_TARGET_BRANCH}" == "9.0.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.1.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.2.x" ] + then + autoreconf -fiv + ./configure --enable-experimental-plugins + gmake -j3 + else + cmake -B cmake-build-release -DBUILD_EXPERIMENTAL_PLUGINS=ON -DCMAKE_INSTALL_PREFIX=/tmp/ats + cmake --build cmake-build-release -v + fi + ''' } } } } - - post { - cleanup { + + post { + cleanup { cleanWs() } } diff --git a/jenkins/github/osx.pipeline b/jenkins/github/osx.pipeline index 64e9baa..2a681f0 100644 --- a/jenkins/github/osx.pipeline +++ b/jenkins/github/osx.pipeline @@ -20,16 +20,32 @@ pipeline { steps { echo 'Starting build' dir('src') { - sh('autoreconf -fiv') - sh('CC="clang" CXX="clang++" CXXFLAGS="-Qunused-arguments" WITH_LIBCPLUSPLUS="yes" ./configure --enable-experimental-plugins --with-openssl=/usr/local/opt/openssl --enable-werror') - sh('make -j3') + sh '''#!/bin/bash + set -x + set -e + + # We do not support CMake builds for the 9.x branch. + if [ "${GITHUB_PR_TARGET_BRANCH}" == "9.0.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.1.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.2.x" ] + then + autoreconf -fiv + CC="clang" CXX="clang++" CXXFLAGS="-Qunused-arguments" WITH_LIBCPLUSPLUS="yes" ./configure --enable-experimental-plugins --with-openssl=/usr/local/opt/openssl --enable-werror + make -j3 + else + export CC="clang" + export CXX="clang++" + cmake -B build --preset ci -G "Unix Makefiles" -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl + cmake --build build -j3 -v + fi + ''' } } } } - - post { - cleanup { + + post { + cleanup { cleanWs() } } diff --git a/jenkins/github/rat.pipeline b/jenkins/github/rat.pipeline index 7d8e02a..4db09e1 100644 --- a/jenkins/github/rat.pipeline +++ b/jenkins/github/rat.pipeline @@ -58,9 +58,9 @@ pipeline { } } } - - post { - cleanup { + + post { + cleanup { cleanWs() } } diff --git a/jenkins/github/rocky.pipeline b/jenkins/github/rocky.pipeline index f6357d5..fc53b70 100644 --- a/jenkins/github/rocky.pipeline +++ b/jenkins/github/rocky.pipeline @@ -71,10 +71,10 @@ pipeline { make install /tmp/ats/bin/traffic_server -K -k -R 1 else - cmake -B cmake-build-quiche -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DENABLE_QUICHE=ON -DCMAKE_BUILD_TYPE=Debug -DBUILD_EXPERIMENTAL_PLUGINS=ON -Dquiche_ROOT=/opt/quiche -DOPENSSL_ROOT_DIR=/opt/boringssl -DCMAKE_INSTALL_PREFIX=/tmp/ats_quiche - cmake --build cmake-build-quiche -j4 -v - cmake --install cmake-build-quiche - pushd cmake-build-quiche + cmake -B build --preset ci-rocky + cmake --build build -v + cmake --install build + pushd build ctest -j4 --output-on-failure --no-compress-output -T Test /tmp/ats_quiche/bin/traffic_server -K -k -R 1 popd diff --git a/jenkins/github/ubuntu.pipeline b/jenkins/github/ubuntu.pipeline index fe7a049..e2c8a29 100644 --- a/jenkins/github/ubuntu.pipeline +++ b/jenkins/github/ubuntu.pipeline @@ -49,18 +49,39 @@ pipeline { set -x set -e - # We don't use c++20 features yet, but we want to make - # sure we can build with the flag set. - export CXXSTD=20 + # We do not support CMake builds for the 9.x branch. + if [ "${GITHUB_PR_TARGET_BRANCH}" == "9.0.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.1.x" -o \ + "${GITHUB_PR_TARGET_BRANCH}" == "9.2.x" ] + then + # We don't use c++20 features yet, but we want to make + # sure we can build with the flag set. + export CXXSTD=20 - autoreconf -fiv - mkdir out_of_source_build_dir - cd out_of_source_build_dir - CC="clang" CXX="clang++" ../configure --enable-experimental-plugins --enable-example-plugins --enable-expensive-tests --prefix=/tmp/ats/ --enable-werror --enable-ccache - make -j4 V=1 Q= - make -j4 check VERBOSE=Y V=1 - make install - /tmp/ats/bin/traffic_server -K -k -R 1 + autoreconf -fiv + mkdir out_of_source_build_dir + cd out_of_source_build_dir + CC="clang" CXX="clang++" ../configure --enable-experimental-plugins --enable-example-plugins --enable-expensive-tests --prefix=/tmp/ats/ --enable-werror --enable-ccache + make -j4 V=1 Q= + make -j4 check VERBOSE=Y V=1 + make install + /tmp/ats/bin/traffic_server -K -k -R 1 + else + export CC="clang" + export CXX="clang++" + + # We don't use c++20 features yet, but we want to make + # sure we can build with the flag set. + sed -i 's/CMAKE_CXX_STANDARD 17/CMAKE_CXX_STANDARD 20/g' CMakeLists.txt + + cmake -B build --preset ci -G "Unix Makefiles" + cmake --build build -v + cmake --install build + pushd build + ctest -j4 --output-on-failure --no-compress-output -T Test + /tmp/ats/bin/traffic_server -K -k -R 1 + popd + fi ''' } }