From bad0a6a66ab1485090d1e6ce46f332caf1ef00eb Mon Sep 17 00:00:00 2001 From: Oleksandr Havryliak Date: Tue, 30 Sep 2025 09:44:14 +0300 Subject: [PATCH 1/2] PSMDB-1690 adjust regression tests for bazel builds --- psmdb/psmdb-regression.groovy | 222 ++++++++++++++++------------------ 1 file changed, 101 insertions(+), 121 deletions(-) diff --git a/psmdb/psmdb-regression.groovy b/psmdb/psmdb-regression.groovy index 467e016de3..51f48a38df 100644 --- a/psmdb/psmdb-regression.groovy +++ b/psmdb/psmdb-regression.groovy @@ -17,7 +17,8 @@ pipeline { string(name: 'version', defaultValue: '8.0.4', description: 'Version for build tag (psm_ver) to build image from sources') string(name: 'release', defaultValue: '1', description: 'Release for build tag (psm_release) to build image from sources') choice(name: 'toolchain_version', choices: ['v4','v3'], description: 'Toolchain version: v3 for PSMDB 5.0/6.0 contains GCC 8.5.0 and Python 3.8.19; v4 for PSMDB 7.0/8.0 contains GCC 11.3.0 and Python 3.10.14') - booleanParam(name: 'build_pro_version',defaultValue: false, description: 'Build PSMDB pro version') + choice(name: 'build_platform', choices: ['bazel','scons'], description: 'Build platform bazel or scons') + booleanParam(name: 'build_pro_version',defaultValue: true, description: 'Build PSMDB pro version') string(name: 'tag', defaultValue: '8.0.4', description: 'Docker image tag to push/pull to/from registry, should be defined manually') string(name: 'parallelexecutors', defaultValue: '1', description: 'Number of parallel executors') string(name: 'testsuites', defaultValue: 'core,unittests,dbtest', description: 'Comma-separated list of testuites') @@ -28,7 +29,6 @@ pipeline { booleanParam(name: 'integrationtests',defaultValue: false, description: 'Check if list of suites contains integration tests') booleanParam(name: 'benchmarktests',defaultValue: false, description: 'Check if list of suites contains benchmark tests') string(name: 'OS', defaultValue: 'debian:12', description: 'Base OS, can be changed to build the image for PBM tests') - string(name: 'scons_params', defaultValue: '--variables-files=gcc.vars --disable-warnings-as-errors --ssl --link-model=dynamic --linker=gold --dbg=off --opt=off -j8 --use-sasl-client --wiredtiger --audit --inmemory --hotbackup ', description: 'Parameters for scons') string(name: 'resmoke_params', defaultValue: '--excludeWithAnyTags=featureFlagColumnstoreIndexes,featureFlagUpdateOneWithoutShardKey,featureFlagGlobalIndexesShardingCatalog,featureFlagGlobalIndexes,featureFlagTelemetry,featureFlagAuditConfigClusterParameter,serverless,does_not_support_config_fuzzer,featureFlagDeprioritizeLowPriorityOperations,featureFlagSbeFull,featureFlagQueryStats,featureFlagTransitionToCatalogShard,requires_latch_analyzer', description: 'Extra params passed to resmoke.py') } options { @@ -53,6 +53,12 @@ pipeline { git poll: false, branch: branch, url: 'https://github.com/percona/percona-server-mongodb.git' withCredentials([aws(accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: '8468e4e0-5371-4741-a9bb-7c143140acea', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY')]) { sh """ + sudo mkdir -p /usr/libexec/docker/cli-plugins + LATEST=\$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\\1/') + sudo curl -L "https://github.com/docker/buildx/releases/download/v\${LATEST}/buildx-v\${LATEST}.linux-amd64" \\ + -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker rm -rf * if [[ ${params.instance} =~ "aarch64" ]]; then curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip" @@ -69,12 +75,13 @@ pipeline { --build-arg psm_ver=${params.version} \ --build-arg psm_release=${params.release} \ --build-arg toolchain_version=${params.toolchain_version} \ + --build-arg build_platform=${params.build_platform} \ --build-arg OS=${params.OS}" if [ "${params.build_pro_version}" = "true" ]; then - build_args="\${build_args} --build-arg pro=--full-featured" + build_args="\${build_args} --build-arg pro=true" fi - docker build . -t public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} \${build_args} + DOCKER_BUILDKIT=1 docker build . --target jstests -t public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} \${build_args} docker push public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} """ } @@ -196,15 +203,31 @@ pipeline { try { stage ("node ${env.NODE_NAME}") { withEnv(['PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/bin']){ - sh ''' + sh """ + sudo mkdir -p /usr/libexec/docker/cli-plugins + LATEST=\$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\\1/') + sudo curl -L "https://github.com/docker/buildx/releases/download/v\${LATEST}/buildx-v\${LATEST}.linux-amd64" \\ + -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx echo -e '{\n "experimental": true,\n "ipv6": true,\n "fixed-cidr-v6": "2001:db8:1::/64"\n}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker - ''' + """ script { - def image = "public.ecr.aws/e7j3v3n0/psmdb-build:" + params.tag sh """ - docker pull ${image} - docker run -v `pwd`/build:/opt/percona-server-mongodb/build -i --rm ${image} bash -c "buildscripts/scons.py ${params.scons_params} install-unittests" + docker pull public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} + curl -o Dockerfile ${params.dockerfile} + VER=\$(echo ${params.version} | cut -d"." -f1) + build_args="--build-arg branch=${params.branch} \ + --build-arg psm_ver=${params.version} \ + --build-arg psm_release=${params.release} \ + --build-arg toolchain_version=${params.toolchain_version} \ + --build-arg build_platform=${params.build_platform} \ + --build-arg OS=${params.OS}" + + if [ "${params.build_pro_version}" = "true" ]; then + build_args="\${build_args} --build-arg pro=true" + fi + DOCKER_BUILDKIT=1 docker build . --target unittests -t unittests \${build_args} """ def suites = [] if ( params.listsuites != '') { @@ -223,48 +246,23 @@ pipeline { checklist.add(fullsuite) def suiteArray = fullsuite.split('\\|',-1) def suite = suiteArray[0] - def storage = '' - def script = '' - if ( suiteArray.size() >= 2 ) { - storage = suiteArray[1] - } - if ( suiteArray.size() >= 3 ) { - script = suiteArray[2] - } def suiteName = suite.split(' ')[0] suite += " --continueOnFailure --shuffle" if ( !suite.contains('--jobs') ) { suite += " --jobs=${params.paralleljobs}" } - if ( storage == 'wiredTiger' ) { - suite += " --storageEngine=wiredTiger --storageEngineCacheSizeGB=1 --excludeWithAnyTags=requires_mmapv1" - suiteName += "-wiredTiger" - } - if ( storage == 'inMemory' ) { - suite += " --storageEngine=inMemory --storageEngineCacheSizeGB=4 --excludeWithAnyTags=requires_persistence,requires_journaling,requires_mmapv1,uses_transactions" - suiteName +="-inMemory" - } - if ( script ) { - sh """ - echo "start suite ${suiteName}" - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm -i ${image} bash -c 'rm -rf *' - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build --rm ${image} bash -c "${script} && python buildscripts/resmoke.py run --suite ${suite} --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm ${image} bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py && chmod -R 777 /work' - echo "finish suite ${suiteName}" - """ - } - else { - sh """ - echo "start suite ${suiteName}" - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm -i ${image} bash -c 'rm -rf *' - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build --rm ${image} bash -c "python buildscripts/resmoke.py run --suite $suite --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm ${image} bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py && chmod -R 777 /work' - echo "finish suite ${suiteName}" - """ - } + sh """ + echo "start suite ${suiteName}" + docker run -v `pwd`/test_results:/work -w /work --rm -i unittests bash -c 'rm -rf *' + sudo chmod -R 777 test_results + docker run -v `pwd`/test_results:/work --rm unittests bash -c "python buildscripts/resmoke.py run --suite ${suite} --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true + docker run -v `pwd`/test_results:/work -w /work --rm unittests bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py' + sudo chmod -R 777 test_results + echo "finish suite ${suiteName}" + """ junit testResults: "test_results/junit.xml", keepLongStdio: true, allowEmptyResults: true, skipPublishingChecks: true sh """ - rm -rf test_results + sudo rm -rf test_results """ } else if ( !checklist.contains(fullsuite) && fullsuite.startsWith(" ") ) { @@ -288,15 +286,31 @@ pipeline { try { stage ("node ${env.NODE_NAME}") { withEnv(['PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/bin']){ - sh ''' + sh """ + sudo mkdir -p /usr/libexec/docker/cli-plugins + LATEST=\$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\\1/') + sudo curl -L "https://github.com/docker/buildx/releases/download/v\${LATEST}/buildx-v\${LATEST}.linux-amd64" \\ + -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx echo -e '{\n "experimental": true,\n "ipv6": true,\n "fixed-cidr-v6": "2001:db8:1::/64"\n}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker - ''' + """ script { - def image = "public.ecr.aws/e7j3v3n0/psmdb-build:" + params.tag sh """ - docker pull ${image} - docker run -v `pwd`/build:/opt/percona-server-mongodb/build -i --rm ${image} bash -c "buildscripts/scons.py ${params.scons_params} install-benchmarks" + docker pull public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} + curl -o Dockerfile ${params.dockerfile} + VER=\$(echo ${params.version} | cut -d"." -f1) + build_args="--build-arg branch=${params.branch} \ + --build-arg psm_ver=${params.version} \ + --build-arg psm_release=${params.release} \ + --build-arg toolchain_version=${params.toolchain_version} \ + --build-arg build_platform=${params.build_platform} \ + --build-arg OS=${params.OS}" + + if [ "${params.build_pro_version}" = "true" ]; then + build_args="\${build_args} --build-arg pro=true" + fi + DOCKER_BUILDKIT=1 docker build . --target benchmarks -t benchmarks \${build_args} """ def suites = [] if ( params.listsuites != '') { @@ -315,48 +329,23 @@ pipeline { checklist.add(fullsuite) def suiteArray = fullsuite.split('\\|',-1) def suite = suiteArray[0] - def storage = '' - def script = '' - if ( suiteArray.size() >= 2 ) { - storage = suiteArray[1] - } - if ( suiteArray.size() >= 3 ) { - script = suiteArray[2] - } def suiteName = suite.split(' ')[0] suite += " --continueOnFailure --shuffle" if ( !suite.contains('--jobs') ) { suite += " --jobs=${params.paralleljobs}" } - if ( storage == 'wiredTiger' ) { - suite += " --storageEngine=wiredTiger --storageEngineCacheSizeGB=1 --excludeWithAnyTags=requires_mmapv1" - suiteName += "-wiredTiger" - } - if ( storage == 'inMemory' ) { - suite += " --storageEngine=inMemory --storageEngineCacheSizeGB=4 --excludeWithAnyTags=requires_persistence,requires_journaling,requires_mmapv1,uses_transactions" - suiteName +="-inMemory" - } - if ( script ) { - sh """ - echo "start suite ${suiteName}" - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm -i ${image} bash -c 'rm -rf *' - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build --rm ${image} bash -c "${script} && python buildscripts/resmoke.py run --suite ${suite} --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm ${image} bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py && chmod -R 777 /work' - echo "finish suite ${suiteName}" - """ - } - else { - sh """ - echo "start suite ${suiteName}" - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm -i ${image} bash -c 'rm -rf *' - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build --rm ${image} bash -c "python buildscripts/resmoke.py run --suite $suite --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm ${image} bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py && chmod -R 777 /work' - echo "finish suite ${suiteName}" - """ - } + sh """ + echo "start suite ${suiteName}" + docker run -v `pwd`/test_results:/work -w /work --rm -i benchmarks bash -c 'rm -rf *' + sudo chmod -R 777 test_results + docker run -v `pwd`/test_results:/work --rm benchmarks bash -c "python buildscripts/resmoke.py run --suite ${suite} --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true + docker run -v `pwd`/test_results:/work -w /work --rm benchmarks bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py' + sudo chmod -R 777 test_results + echo "finish suite ${suiteName}" + """ junit testResults: "test_results/junit.xml", keepLongStdio: true, allowEmptyResults: true, skipPublishingChecks: true sh """ - rm -rf test_results + sudo rm -rf test_results """ } else if ( !checklist.contains(fullsuite) && fullsuite.startsWith(" ") ) { @@ -380,16 +369,32 @@ pipeline { try { stage ("node ${env.NODE_NAME}") { withEnv(['PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/bin']){ - sh ''' + sh """ + sudo mkdir -p /usr/libexec/docker/cli-plugins + LATEST=\$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\\1/') + sudo curl -L "https://github.com/docker/buildx/releases/download/v\${LATEST}/buildx-v\${LATEST}.linux-amd64" \\ + -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx echo -e '{\n "experimental": true,\n "ipv6": true,\n "fixed-cidr-v6": "2001:db8:1::/64"\n}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker - ''' + """ script { - def image = "public.ecr.aws/e7j3v3n0/psmdb-build:" + params.tag sh """ - docker pull ${image} - docker run -v `pwd`/build:/opt/percona-server-mongodb/build -i --rm ${image} bash -c "buildscripts/scons.py ${params.scons_params} install-integration-tests" - """ + docker pull public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} + curl -o Dockerfile ${params.dockerfile} + VER=\$(echo ${params.version} | cut -d"." -f1) + build_args="--build-arg branch=${params.branch} \ + --build-arg psm_ver=${params.version} \ + --build-arg psm_release=${params.release} \ + --build-arg toolchain_version=${params.toolchain_version} \ + --build-arg build_platform=${params.build_platform} \ + --build-arg OS=${params.OS}" + + if [ "${params.build_pro_version}" = "true" ]; then + build_args="\${build_args} --build-arg pro=true" + fi + DOCKER_BUILDKIT=1 docker build . --target integrationtests -t integrationtests \${build_args} + """ def suites = [] if ( params.listsuites != '') { sh """ @@ -407,48 +412,23 @@ pipeline { checklist.add(fullsuite) def suiteArray = fullsuite.split('\\|',-1) def suite = suiteArray[0] - def storage = '' - def script = '' - if ( suiteArray.size() >= 2 ) { - storage = suiteArray[1] - } - if ( suiteArray.size() >= 3 ) { - script = suiteArray[2] - } def suiteName = suite.split(' ')[0] suite += " --continueOnFailure --shuffle" if ( !suite.contains('--jobs') ) { suite += " --jobs=${params.paralleljobs}" } - if ( storage == 'wiredTiger' ) { - suite += " --storageEngine=wiredTiger --storageEngineCacheSizeGB=1 --excludeWithAnyTags=requires_mmapv1" - suiteName += "-wiredTiger" - } - if ( storage == 'inMemory' ) { - suite += " --storageEngine=inMemory --storageEngineCacheSizeGB=4 --excludeWithAnyTags=requires_persistence,requires_journaling,requires_mmapv1,uses_transactions" - suiteName +="-inMemory" - } - if ( script ) { sh """ echo "start suite ${suiteName}" - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm -i ${image} bash -c 'rm -rf *' - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build --rm ${image} bash -c "${script} && python buildscripts/resmoke.py run --suite ${suite} --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm ${image} bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py && chmod -R 777 /work' - echo "finish suite ${suiteName}" - """ - } - else { - sh """ - echo "start suite ${suiteName}" - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm -i ${image} bash -c 'rm -rf *' - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build --rm ${image} bash -c "python buildscripts/resmoke.py run --suite $suite --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true - docker run -v `pwd`/test_results:/work -v `pwd`/build:/opt/percona-server-mongodb/build -w /work --rm ${image} bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py && chmod -R 777 /work' + docker run -v `pwd`/test_results:/work -w /work --rm -i integrationtests bash -c 'rm -rf *' + sudo chmod -R 777 test_results + docker run -v `pwd`/test_results:/work --rm integrationtests bash -c "python buildscripts/resmoke.py run --suite ${suite} --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true + docker run -v `pwd`/test_results:/work -w /work --rm integrationtests bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py' + sudo chmod -R 777 test_results echo "finish suite ${suiteName}" """ - } junit testResults: "test_results/junit.xml", keepLongStdio: true, allowEmptyResults: true, skipPublishingChecks: true sh """ - rm -rf test_results + sudo rm -rf test_results """ } else if ( !checklist.contains(fullsuite) && fullsuite.startsWith(" ") ) { From 3a1775bcb2d096e91c5d70fa82f93563fc076cf6 Mon Sep 17 00:00:00 2001 From: Oleksandr Havryliak Date: Thu, 9 Oct 2025 10:09:31 +0300 Subject: [PATCH 2/2] PSMDB-1690 add retries on docker pull --- psmdb/psmdb-regression.groovy | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/psmdb/psmdb-regression.groovy b/psmdb/psmdb-regression.groovy index 51f48a38df..b4aa55d641 100644 --- a/psmdb/psmdb-regression.groovy +++ b/psmdb/psmdb-regression.groovy @@ -12,7 +12,7 @@ pipeline { } parameters { choice(name: 'image', choices: ['build','predefined'], description: 'Build image from sources or use predefined docker image for tests') - string(name: 'dockerfile', defaultValue: 'https://raw.githubusercontent.com/Percona-QA/psmdb-testing/main/regression-tests/build_image/Dockerfile_gcc_from_scratch', description: 'Dockerfile for image') + string(name: 'dockerfile', defaultValue: 'https://raw.githubusercontent.com/Percona-QA/psmdb-testing/refs/heads/main/regression-tests/build_image/Dockerfile_gcc_from_scratch', description: 'Dockerfile for image') string(name: 'branch', defaultValue: 'v8.0', description: 'Repo branch for build image from sources') string(name: 'version', defaultValue: '8.0.4', description: 'Version for build tag (psm_ver) to build image from sources') string(name: 'release', defaultValue: '1', description: 'Release for build tag (psm_release) to build image from sources') @@ -110,7 +110,10 @@ pipeline { script { def image = "public.ecr.aws/e7j3v3n0/psmdb-build:" + params.tag sh """ - docker pull ${image} + for i in \$(seq 5); do + docker pull ${image} && break || sleep 30 + echo "Docker pull failed, retrying..." + done """ def suites = [] if ( params.listsuites != '') { @@ -214,7 +217,7 @@ pipeline { """ script { sh """ - docker pull public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} + docker pull public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} || true curl -o Dockerfile ${params.dockerfile} VER=\$(echo ${params.version} | cut -d"." -f1) build_args="--build-arg branch=${params.branch} \ @@ -297,7 +300,7 @@ pipeline { """ script { sh """ - docker pull public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} + docker pull public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} || true curl -o Dockerfile ${params.dockerfile} VER=\$(echo ${params.version} | cut -d"." -f1) build_args="--build-arg branch=${params.branch} \ @@ -331,9 +334,6 @@ pipeline { def suite = suiteArray[0] def suiteName = suite.split(' ')[0] suite += " --continueOnFailure --shuffle" - if ( !suite.contains('--jobs') ) { - suite += " --jobs=${params.paralleljobs}" - } sh """ echo "start suite ${suiteName}" docker run -v `pwd`/test_results:/work -w /work --rm -i benchmarks bash -c 'rm -rf *' @@ -380,7 +380,7 @@ pipeline { """ script { sh """ - docker pull public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} + docker pull public.ecr.aws/e7j3v3n0/psmdb-build:${params.tag} || true curl -o Dockerfile ${params.dockerfile} VER=\$(echo ${params.version} | cut -d"." -f1) build_args="--build-arg branch=${params.branch} \