Skip to content

Commit

Permalink
run-make-check.sh: Adding ccache tuning for the CI
Browse files Browse the repository at this point in the history
When run-make-check is run by the CI, some tuning can be performed to
speedup the build.

This commit :
- Detect jenkins by searching JENKINS_HOME env variable
- Defines the SOURCE_DATE_EPOCH to enforce a stable date across builds
- Ask cmake not to use the git versioning which adds useless entropy for a temporary build (ENABLE_GIT_VERSION=OFF)
- Define the ccache slopiness to increase efficiency
- Increase the ccache size to save multiple builds to maximise cache hit between PRs
- Print ccache statistics to evaluate ccache efficiency

Signed-off-by: Erwan Velu <[email protected]>
  • Loading branch information
Erwan Velu committed Jul 4, 2018
1 parent 297a428 commit 4cb5a59
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion run-make-check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,30 @@ function run() {
CMAKE_PYTHON_OPTS="-DWITH_PYTHON2=OFF -DWITH_PYTHON3=ON -DMGR_PYTHON_VERSION=3"
fi

$DRY_RUN ./do_cmake.sh -DWITH_FIO=ON -DWITH_GTEST_PARALLEL=ON $CMAKE_PYTHON_OPTS $@ || return 1
CMAKE_BUILD_OPTS="-DWITH_FIO=ON -DWITH_GTEST_PARALLEL=ON"

# Are we in the CI ?
if [ -n "$JENKINS_HOME" ]; then
echo "Jenkins got detected, let's tune the build"
# The following settings are made for improving ccache efficiency
# by removing the entropy generated by the date/time embedded in the build
CMAKE_BUILD_OPTS="$CMAKE_BUILD_OPTS -D ENABLE_GIT_VERSION=OFF"
export SOURCE_DATE_EPOCH=$(date +%D |date -f- +%s)
ccache -o sloppiness=time_macros
ccache -o run_second_cpp=true

# Build host has plenty of space available, let's use it to keep
# various versions of the built objects. This could increase the cache hit
# if the same or similar PRs are running several times
ccache -o max_size=100G
ccache -z # Reset the ccache statistics
fi
$DRY_RUN ./do_cmake.sh $CMAKE_BUILD_OPTS $CMAKE_PYTHON_OPTS $@ || return 1
$DRY_RUN cd build
$DRY_RUN make $BUILD_MAKEOPTS tests || return 1
if [ -n "$JENKINS_HOME" ]; then
ccache -s # print the ccache statistics to evaluate the efficiency
fi
# prevent OSD EMFILE death on tests, make sure large than 1024
$DRY_RUN ulimit -n $(ulimit -Hn)
if [ $(ulimit -n) -lt 1024 ];then
Expand Down

0 comments on commit 4cb5a59

Please sign in to comment.