Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions ceph-make-check-periodic-ppc64/build/build
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/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
# TODO: enable (read-only?) sccache support
#npm_cache_info() {
# echo '===== npm cache info ======='
# du -sh "${NPMCACHE}" || echo "${NPMCACHE} not present"
# echo '============================'
#}
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

#npm_cache_info
bwc 1 -e configure
# try to pre-load the npm cache so that it doesn't fail
# during the normal build step
#for i in {0..5}; do
# bwc 1 -e custom -- \
# cmake --build build -t mgr-dashboard-frontend-deps && break
# echo "Warning: Attempt $((i + 1)) to cache npm packages failed."
# sleep $((10 + 30 * i))
#done
#npm_cache_info
bwc 4 -e tests
#npm_cache_info
sleep 5
ps -ef | grep -v jnlp | grep ceph || true
32 changes: 32 additions & 0 deletions ceph-make-check-periodic-ppc64/build/kill-tests
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/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
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
- 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: ghprbPullId
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
- raw:
xml: |
<com.sonyericsson.jenkins.plugins.bfa.model.ScannerJobProperty plugin="build-failure-analyzer@1.18.1">
<doNotScan>false</doNotScan>
</com.sonyericsson.jenkins.plugins.bfa.model.ScannerJobProperty>
- github:
url: https://github.com/ceph/ceph/
- raw:
xml: |
<com.sonyericsson.rebuild.RebuildSettings plugin="rebuild@1.25">
<autoRebuild>false</autoRebuild>
<rebuildDisabled>false</rebuildDisabled>
</com.sonyericsson.rebuild.RebuildSettings>
quiet-period: '5'
retry-count: '3'
scm:
- git:
url: https://github.com/ceph/ceph.git
name: origin
branches:
- origin/pr/${{ghprbPullId}}/merge
refspec: +refs/pull/${{ghprbPullId}}/*:refs/remotes/origin/pr/${{ghprbPullId}}/*
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:
- 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