3232
3333#
3434# build-local.sh - runs a Docker container from a Docker image with environment
35- # prepared for running libpmemobj-cpp tests and run those tests.
35+ # prepared for running libpmemobj-cpp builds and tests.
3636#
3737#
3838# Notes:
3939# - run this script from its location or set the variable 'HOST_WORKDIR' to
4040# where the root of this project is on the host machine,
4141# - set variables 'OS' and 'OS_VER' properly to a system you want to build this
4242# repo on (for proper values take a look on the list of Dockerfiles at the
43- # utils/docker/images directory), e.g. OS=ubuntu, OS_VER=19.04 .
43+ # utils/docker/images directory), e.g. OS=ubuntu, OS_VER=19.10 .
4444#
4545
4646set -e
47+
48+ source $( dirname $0 ) /set-ci-vars.sh
49+ source $( dirname $0 ) /set-vars.sh
4750source $( dirname $0 ) /valid-branches.sh
4851
49- # Environment variables that can be customized (default values are after dash):
50- export KEEP_CONTAINER=${KEEP_CONTAINER:- 0}
52+ if [[ " $CI_EVENT_TYPE " != " cron" && " $CI_BRANCH " != " coverity_scan" \
53+ && " $TYPE " == " coverity" ]]; then
54+ echo " INFO: Skip Coverity scan job if build is triggered neither by " \
55+ " 'cron' nor by a push to 'coverity_scan' branch"
56+ exit 0
57+ fi
5158
59+ if [[ ( " $CI_EVENT_TYPE " == " cron" || " $CI_BRANCH " == " coverity_scan" )\
60+ && " $TYPE " != " coverity" ]]; then
61+ echo " INFO: Skip regular jobs if build is triggered either by 'cron'" \
62+ " or by a push to 'coverity_scan' branch"
63+ exit 0
64+ fi
5265
5366if [[ -z " $OS " || -z " $OS_VER " ]]; then
5467 echo " ERROR: The variables OS and OS_VER have to be set " \
55- " (e.g. OS=ubuntu , OS_VER=19.04 )."
68+ " (eg. OS=fedora , OS_VER=31 )."
5669 exit 1
5770fi
5871
5972if [[ -z " $HOST_WORKDIR " ]]; then
60- HOST_WORKDIR=$( readlink -f ../..)
61- fi
62-
63- if [[ " $TRAVIS_EVENT_TYPE " == " cron" || " $TRAVIS_BRANCH " == " coverity_scan" ]]; then
64- if [[ " $TYPE " != " coverity" ]]; then
65- echo " Skipping non-Coverity job for cron/Coverity build"
66- exit 0
67- fi
68- else
69- if [[ " $TYPE " == " coverity" ]]; then
70- echo " Skipping Coverity job for non cron/Coverity build"
71- exit 0
72- fi
73+ echo " ERROR: The variable HOST_WORKDIR has to contain a path to " \
74+ " the root of this project on the host machine"
75+ exit 1
7376fi
7477
7578imageName=${DOCKERHUB_REPO} :1.9-${OS} -${OS_VER}
114117if [ -n " $DNS_SERVER " ]; then DNS_SETTING=" --dns=$DNS_SERVER " ; fi
115118
116119# Only run doc update on $GITHUB_REPO master or stable branch
117- if [[ -z " ${TRAVIS_BRANCH } " || -z " ${TARGET_BRANCHES[${TRAVIS_BRANCH }]} " || " $TRAVIS_PULL_REQUEST " != " false " || " $TRAVIS_REPO_SLUG " != " ${GITHUB_REPO} " ]]; then
120+ if [[ -z " ${CI_BRANCH } " || -z " ${TARGET_BRANCHES[${CI_BRANCH }]} " || " $CI_EVENT_TYPE " == " pull_request " || " $CI_REPO_SLUG " != " ${GITHUB_REPO} " ]]; then
118121 AUTO_DOC_UPDATE=0
119122fi
120123
121- WORKDIR=/libpmemobj-cpp
122- SCRIPTSDIR=$WORKDIR /utils/docker
123-
124- # check if we are running on a CI (Travis or GitHub Actions)
124+ # Check if we are running on a CI (Travis or GitHub Actions)
125125[ -n " $GITHUB_ACTIONS " -o -n " $TRAVIS " ] && CI_RUN=" YES" || CI_RUN=" NO"
126126
127127# do not allocate a pseudo-TTY if we are running on GitHub Actions
128128[ ! $GITHUB_ACTIONS ] && TTY=' -t' || TTY=' '
129129
130- echo Building ${OS} -${OS_VER}
130+ WORKDIR=/libpmemobj-cpp
131+ SCRIPTSDIR=$WORKDIR /utils/docker
132+
133+ echo Building on ${OS} -${OS_VER}
131134
132135# Run a container with
133136# - environment variables set (--env)
@@ -138,21 +141,26 @@ docker run --privileged=true --name=$containerName -i $TTY \
138141 ${docker_opts} \
139142 --env http_proxy=$http_proxy \
140143 --env https_proxy=$https_proxy \
141- --env AUTO_DOC_UPDATE=$AUTO_DOC_UPDATE \
142- --env GITHUB_TOKEN=$GITHUB_TOKEN \
143144 --env WORKDIR=$WORKDIR \
144145 --env SCRIPTSDIR=$SCRIPTSDIR \
145- --env TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG \
146- --env TRAVIS_BRANCH=$TRAVIS_BRANCH \
147- --env TRAVIS_EVENT_TYPE=$TRAVIS_EVENT_TYPE \
146+ --env COVERAGE=$COVERAGE \
147+ --env AUTO_DOC_UPDATE=$AUTO_DOC_UPDATE \
148+ --env CI_RUN=$CI_RUN \
149+ --env TRAVIS=$TRAVIS \
150+ --env GITHUB_REPO=$GITHUB_REPO \
151+ --env CI_COMMIT_RANGE=$CI_COMMIT_RANGE \
152+ --env CI_COMMIT=$CI_COMMIT \
153+ --env CI_REPO_SLUG=$CI_REPO_SLUG \
154+ --env CI_BRANCH=$CI_BRANCH \
155+ --env CI_EVENT_TYPE=$CI_EVENT_TYPE \
156+ --env GITHUB_TOKEN=$GITHUB_TOKEN \
148157 --env COVERITY_SCAN_TOKEN=$COVERITY_SCAN_TOKEN \
149158 --env COVERITY_SCAN_NOTIFICATION_EMAIL=$COVERITY_SCAN_NOTIFICATION_EMAIL \
150- --env COVERAGE=$COVERAGE \
151159 --env CHECK_CPP_STYLE=${CHECK_CPP_STYLE:- ON} \
152160 --env TESTS_LONG=${TESTS_LONG:- OFF} \
153161 --env TESTS_TBB=${TESTS_TBB:- ON} \
154- --env CI_RUN=$CI_RUN \
155162 --env TZ=' Europe/Warsaw' \
163+ --shm-size=4G \
156164 -v $HOST_WORKDIR :$WORKDIR \
157165 -v /etc/localtime:/etc/localtime \
158166 -w $SCRIPTSDIR \
0 commit comments