--- /dev/null
+#!/bin/bash -ex
+
+docs_pr_only
+container_pr_only
+gha_pr_only
+qa_pr_only
+if [[ "$DOCS_ONLY" = true || "$CONTAINER_ONLY" = true || "$GHA_ONLY" == true || "$QA_ONLY" == true ]]; then
+ echo "Only the doc/, container/, qa/ or .github/ dir changed. No need to run make check."
+ exit 0
+fi
+
+NPROC=$(nproc)
+NPMCACHE=${HOME}/npmcache
+cat >.env <<EOF
+NPROC=${NPROC}
+MAX_PARALLEL_JOBS=${NPROC}
+WITH_RBD_RWL=true
+WITHOUT_DASHBOARD=true
+WITHOUT_BREAKPAD=true
+DISABLE_WERROR=true
+DISABLE_FIO=true
+JENKINS_HOME=${JENKINS_HOME}
+REWRITE_COVERAGE_ROOTDIR=${PWD}/src/pybind/mgr/dashboard/frontend
+EOF
+bwc() {
+ # specify timeout in hours for $1
+ local timeout=$(($1 * 60 * 60))
+ shift
+ timeout "${timeout}" ./src/script/build-with-container.py \
+ -d "${DISTRO_BASE:-centos9}" \
+ --env-file="${PWD}/.env" \
+ --current-branch="${GIT_BRANCH:-main}" \
+ -t+ppc64 \
+ "${@}"
+}
+
+podman login -u ${DOCKER_HUB_USERNAME} -p ${DOCKER_HUB_PASSWORD} docker.io
+
+bwc 1 -e configure
+bwc 4 -e tests
+sleep 5
+ps -ef | grep -v jnlp | grep ceph || true
--- /dev/null
+#!/bin/bash -ex
+
+# kill all descendant processes of ctest
+
+# ceph-make-check-periodic-ppc64/build/build is killed by jenkins when the ceph-make-check-periodic-ppc64 job is aborted or
+# canceled, see https://www.jenkins.io/doc/book/using/aborting-a-build/ . but build/build does not
+# wait until all its children processes quit. after ctest is killed by SIGTERM, there is chance
+# that some tests are still running as ctest does not get a chance to kill them before it terminates.
+# if these tests had timed out, ctest would kill them using SIGKILL. so we need to kill them
+# manually after the job is aborted.
+
+# if ctest is still running, get its pid, otherwise we are done.
+ctest_pid=$(pgrep ctest) || exit 0
+# the parent process of ctest should have been terminated, but this might not be true when
+# it comes to some of its descendant processes, for instance, unittest-seastar-messenger
+ctest_pgid=$(ps --no-headers --format 'pgid:1' --pid $ctest_pid)
+kill -SIGTERM -- -"$ctest_pgid"
+# try harder
+for seconds in 0 1 1 2 3; do
+ sleep $seconds
+ if pgrep --pgroup $ctest_pgid >/dev/null; then
+ # kill only if we've waited for a while
+ if test $seconds != 0; then
+ pgrep --pgroup $ctest_pgid
+ echo 'try harder'
+ kill -SIGKILL -- -"$ctest_pgid"
+ fi
+ else
+ echo 'killed'
+ break
+ fi
+done
--- /dev/null
+- job:
+ block-downstream: false
+ block-upstream: false
+ builders:
+ - shell:
+ !include-raw-verbatim:
+ - ../../../scripts/build_utils.sh
+ - ../../../scripts/setup_container_runtime.sh
+ - ../../build/build
+ concurrent: true
+ disabled: false
+ name: ceph-make-check-periodic-ppc64
+ node: 'ppc64 && (installed-os-noble || centos9)'
+ parameters:
+ - string:
+ name: PullID
+ description: "the GitHub pull id, like '72' in 'ceph/pull/72'"
+ default: origin/main
+ project-type: freestyle
+ properties:
+ - build-discarder:
+ artifact-days-to-keep: -1
+ artifact-num-to-keep: -1
+ days-to-keep: 15
+ num-to-keep: 300
+ - github:
+ url: https://github.com/ceph/ceph/
+ quiet-period: '5'
+ retry-count: '3'
+ scm:
+ - git:
+ url: https://github.com/ceph/ceph.git
+ name: origin
+ branches:
+ - origin/pr/${{PullID}}/merge
+ refspec: +refs/pull/${{PullID}}/*:refs/remotes/origin/pr/${{PullID}}/*
+ skip-tag: true
+ shallow-clone: true
+ honor-refspec: true
+ timeout: 20
+ wipe-workspace: true
+ triggers:
+ - timed: '@weekly'
+ publishers:
+ - cobertura:
+ report-file: "src/pybind/mgr/dashboard/frontend/coverage/cobertura-coverage.xml"
+ only-stable: "true"
+ health-auto-update: "false"
+ stability-auto-update: "false"
+ zoom-coverage-chart: "true"
+ source-encoding: "Big5"
+ targets:
+ - files:
+ healthy: 10
+ unhealthy: 20
+ failing: 30
+ - method:
+ healthy: 10
+ unhealthy: 20
+ failing: 30
+ - postbuildscript:
+ builders:
+ - role: SLAVE
+ build-on:
+ - ABORTED
+ build-steps:
+ - shell:
+ !include-raw-verbatim:
+ - ../../build/kill-tests
+ - xunit:
+ thresholds:
+ - failed:
+ unstable: 0
+ unstablenew: 0
+ failure: 0
+ failurenew: 0
+ types:
+ - ctest:
+ pattern: "build/Testing/**/Test.xml"
+ skip-if-no-test-files: true
+ wrappers:
+ - ansicolor
+ - credentials-binding:
+ - username-password-separated:
+ credential-id: github-readonly-token
+ username: GITHUB_USER
+ password: GITHUB_PASS
+ - username-password-separated:
+ credential-id: dgalloway-docker-hub
+ username: DOCKER_HUB_USERNAME
+ password: DOCKER_HUB_PASSWORD