Skip to content
Snippets Groups Projects

Fix for LHCb script and cosmetic changes

Merged Domenico Giordano requested to merge AVfixes07 into qa
4 files
+ 87
56
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 66
28
@@ -2,6 +2,8 @@
set -x # enable debug printouts
#set -e # immediate exit on error
function fail(){
echo "Failing '$@'" >&2
@@ -16,6 +18,7 @@ function execute(){
function run_docker_wl(){
echo "[run_docker_wl] starting at $(date)"
[ -z "$bmkopts" ] && bmkopts=""
echo "[run_docker_wl] bmkopts options " $bmkopts
IMAGE="$DOCKER_IMAGE:cvmfs-shrink"
@@ -25,19 +28,23 @@ function run_docker_wl(){
execute docker run --rm -v $JOB_DIR/results:/results -v $HEP_WL_SOURCE_DIR:$HEP_WL_SOURCE_DIR -w $HEP_WL_SOURCE_DIR -v $CVMFS_VOLUME:/cvmfs:shared $IMAGE $bmkopts
STATUS=$?
echo "[run_docker_wl] exit status $STATUS"
echo "[run_docker_wl] finished at $(date)"
return $STATUS
}
function flush_cache(){
echo "[flush_cache] starting at $(date)"
for acvmfs in `ls ${CVMFS_TRACES_DIR} | sed -e 's@cvmfs-\([^\.]*\)\.cern\.ch.*@\1@'`; do
echo "[flush_cache] ... flushing " $acvmfs;
cvmfs_talk -i ${acvmfs}.cern.h tracebuffer flush;
done
echo "[flush_cache] finished at $(date)"
}
function run_shrinkwrap(){
echo "[run_shrinkwrap] starting at $(date)"
echo "CVMFS_EXPORT_DIR $CVMFS_EXPORT_DIR"
if [ -e ${CVMFS_EXPORT_DIR} ]; then
echo "[run_shrinkwrap] ${CVMFS_EXPORT_DIR} already exists. removing it" #? (y/[n]) "
@@ -69,64 +76,78 @@ EOF
echo "[run_shrinkwrap] cvmfs_shrinkwrap --repo $reponame --src-config ${CVMFS_SHRINK_CONF} --spec-file ${CVMFS_TRACES_DIR}/$specname --dest-base ${CVMFS_EXPORT_DIR}/cvmfs/ -j 4"
cvmfs_shrinkwrap --repo $reponame --src-config ${CVMFS_SHRINK_CONF} --spec-file ${CVMFS_TRACES_DIR}/$specname --dest-base ${CVMFS_EXPORT_DIR}/cvmfs/ -j 4 || echo "[run_shrinkwrap] is the cvmfs_shrinkwrap failing??"
done
echo "[run_shrinkwrap] finished at $(date)"
}
function copy_cvmfs(){
echo "[copy_cvmfs] starting at $(date)"
rm -rf ${CVMFS_EXPORT_DIR}/cvmfs/.data
[[ -e $HEP_WL_SOURCE_DIR/cvmfs ]] && echo "[copy_cvmfs] removing cvmfs dir in $HEP_WL_SOURCE_DIR/" && rm -rf $HEP_WL_SOURCE_DIR/cvmfs
echo "[copy_cvmfs] mv ${CVMFS_EXPORT_DIR}/cvmfs $HEP_WL_SOURCE_DIR "
mv ${CVMFS_EXPORT_DIR}/cvmfs $HEP_WL_SOURCE_DIR || fail "cannot mv ${CVMFS_EXPORT_DIR}/cvmfs $HEP_WL_SOURCE_DIR"
mv ${CVMFS_EXPORT_DIR}/cvmfs $HEP_WL_SOURCE_DIR || fail "[copy_cvmfs] cannot mv ${CVMFS_EXPORT_DIR}/cvmfs $HEP_WL_SOURCE_DIR"
#FIXME: if cms repo, need to copy by hand the SITECONF/local, because it's a sym link
[[ -e /cvmfs/cms.cern.ch/SITECONF/local ]] && ( cp -r -H /cvmfs/cms.cern.ch/SITECONF/local $HEP_WL_SOURCE_DIR/cvmfs/cms.cern.ch/SITECONF/ || fail "cannot cp /cvmfs/cms.cern.ch/SITECONF/local")
[[ -e /cvmfs/cms.cern.ch/SITECONF/local ]] && ( cp -r -H /cvmfs/cms.cern.ch/SITECONF/local $HEP_WL_SOURCE_DIR/cvmfs/cms.cern.ch/SITECONF/ || fail "[copy_cvmfs] cannot cp /cvmfs/cms.cern.ch/SITECONF/local")
ls $HEP_WL_SOURCE_DIR/cvmfs
echo "[copy_cvmfs] finished at $(date)"
}
function build_docker_image(){
echo "[build_docker_image] starting at $(date)"
[[ "$1" == "" ]] && fail "[build_docker_image] No image name provided. Failing "
IMAGE=$1
echo "[build_docker_image] " $IMAGE
cd ${HEP_WL_SOURCE_DIR}
generate_Dockerfile -s $HEP_WL_SPEC_FILE -d ./Dockerfile.template
cat Dockerfile
docker build -t "${IMAGE}" . || fail "docker build -t ${IMAGE}"
docker build -t "${IMAGE}" . || fail "[build_docker_image] docker build -t ${IMAGE}"
echo "[build_docker_image] finished at $(date)"
}
function clean_area(){
echo "[clean_area] starting at $(date)"
echo "removing copy of cvmfs dir " && rm -rf "$HEP_WL_SOURCE_DIR/cvmfs"
echo "[clean_area] finished at $(date)"
}
function test_docker_image(){
echo "[test_docker_image] starting at $(date)"
[[ "$1" == "" ]] && fail "[test_docker_image] No image name provided. Failing "
IMAGE=$1
echo "[test_docker_image] " $IMAGE
[ -z "$bmkopts" ] && bmkopts=""
execute docker run --rm -v $JOB_DIR/results:/results $IMAGE $bmkopts
echo "[test_docker_image] finished at $(date)"
}
function publish_docker_image(){
echo "[publish_docker_image] starting at $(date)"
[[ "${DOCKER_REGISTRY}" == "" ]] && return 0
echo $CI_BUILD_TOKEN | docker login -u gitlab-ci-token --password-stdin gitlab-registry.cern.ch
echo "[publish_docker_image] docker push ${IMAGE}"
docker push "${IMAGE}" || fail "docker push ${IMAGE}"
docker push "${IMAGE}" || fail "[publish_docker_image] docker push ${IMAGE}"
echo "[publish_docker_image] finished at $(date)"
}
function build_standalone_image(){
echo "[build_standalone_image] starting at $(date)"
IMAGE="${DOCKER_IMAGE}":"${DOCKER_IMAGE_TAG}"
echo "[build_standalone_image] IMAGE: $IMAGE"
[[ "${DOCKER_REGISTRY}" != "" ]] && IMAGE="${DOCKER_REGISTRY}/${IMAGE}"
build_docker_image "$IMAGE" || fail "build_docker_image $IMAGE"
test_docker_image "$IMAGE" || fail "test_docker_image $IMAGE"
publish_docker_image || fail "publish_docker_image"
build_docker_image "$IMAGE" || fail "[build_standalone_image] build_docker_image $IMAGE"
test_docker_image "$IMAGE" || fail "[build_standalone_image] test_docker_image $IMAGE"
publish_docker_image || fail "[build_standalone_image] publish_docker_image"
echo "[build_standalone_image] finished at $(date)"
}
function set_dir(){
echo "[set_dir] starting at $(date)"
[[ $2 == "" ]] && echo "HEP Workload directory undefined. Exit" && return 1
current_dir=`pwd -P`
cd $2
@@ -135,15 +156,17 @@ function set_dir(){
eval echo "setting var " $1 " to value " \$$1
eval export $1
return 0
echo "[set_dir] finished at $(date)"
}
function mount_cvmfs(){
echo "[mount_cvmfs] starting at $(date)"
CVMFS_REPOSITORIES=$1
[[ "$CVMFS_REPOSITORIES" == "" ]] && fail "no repo to mount in cvmfs"
echo -e "\nmounting cvmfs repositories $CVMFS_REPOSITORIES"
echo -e "NB: it's fine if there is a single error message such as 'Failed to get D-Bus connection: Operation not permitted' "
[[ ! -e $CVMFS_TRACES_DIR ]] && ((mkdir -p $CVMFS_TRACES_DIR && chown cvmfs $CVMFS_TRACES_DIR) || fail "cannot create $CVMFS_TRACES_DIR")
[[ ! -e $CVMFS_TRACES_DIR ]] && ((mkdir -p $CVMFS_TRACES_DIR && chown cvmfs $CVMFS_TRACES_DIR) || fail "[mount_cvmfs] cannot create $CVMFS_TRACES_DIR")
cat > /etc/cvmfs/default.local <<EOF
CVMFS_REPOSITORIES=${CVMFS_REPOSITORIES}
CVMFS_QUOTA_LIMIT=6000
@@ -155,7 +178,7 @@ EOF
mkdir -p /etc/cvmfs/config.d
echo "export CMS_LOCAL_SITE=/cvmfs/cms.cern.ch/SITECONF/T0_CH_CERN" > /etc/cvmfs/config.d/cms.cern.ch.local
#[[ `ls /cvmfs | wc -l` -gt 0 ]] && fail "/cvmfs already contains files. remove them"
cvmfs_config setup nostart || fail "problem with cvmfs_config setup nostart"
cvmfs_config setup nostart || fail "[mount_cvmfs] problem with cvmfs_config setup nostart"
for repo in `echo ${CVMFS_REPOSITORIES}| sed -e 's@,@ @g'`;
do
umount /cvmfs/$repo
@@ -163,10 +186,12 @@ EOF
mkdir -p /cvmfs/$repo
mount -t cvmfs $repo /cvmfs/$repo
done
echo "[mount_cvmfs] finished at $(date)"
}
function execute_procedure(){
echo "[execute_procedure] starting at $(date)"
case $1 in
sleep)
echo "not running any step of the procedure, just keep alive to expose cvmfs"
@@ -174,30 +199,40 @@ function execute_procedure(){
;;
build)
echo "building docker image. Skipping previous steps"
build_standalone_image || fail 'build_standalone_image'
build_standalone_image || fail '[execute_procedure] build_standalone_image'
;;
shrink)
echo "Shrinking cvmfs and building docker image"
run_shrinkwrap || fail 'run_shrinkwrap'
copy_cvmfs || fail 'copy_cvmfs'
build_standalone_image || fail 'build_standalone_image'
run_shrinkwrap || fail '[execute_procedure] run_shrinkwrap'
copy_cvmfs || fail '[execute_procedure] copy_cvmfs'
build_standalone_image || fail '[execute_procedure] build_standalone_image'
;;
all | *)
echo "Running full sequence"
run_docker_wl || fail 'run_docker_wl'
#flush_cache || fail #this probably needs to share /val/lib/cvmfs inside the container
run_shrinkwrap || fail 'run_shrinkwrap'
copy_cvmfs || fail 'copy_cvmfs'
build_standalone_image || fail 'build_standalone_image'
run_docker_wl || fail '[execute_procedure] run_docker_wl'
#flush_cache || fail '[execute_procedure] flush_cache' #this probably needs to share /val/lib/cvmfs inside the container
run_shrinkwrap || fail '[execute_procedure] run_shrinkwrap'
copy_cvmfs || fail '[execute_procedure] copy_cvmfs'
build_standalone_image || fail '[execute_procedure] build_standalone_image'
esac
echo "[execute_procedure] finished at $(date)"
}
### Main
#parameters to be passed by command line
#1: SPEC file path
#2: optional export DOCKER_REGISTRY gitlab-registry.cern.ch/giordano/hep-workloads
echo "[main.sh] starting at $(date)"
echo "Current directory is $(pwd)"
echo "JOB_DIR is ${JOB_DIR}" # within docker this may come from .env.file
echo "CI_PROJECT_DIR is ${CI_PROJECT_DIR}" # within docker this may come from .env.file
SCRIPT_DIR=`dirname $0`
echo "SCRIPT_DIR is ${SCRIPT_DIR}"
. $SCRIPT_DIR/generate_Dockerfile.sh # this simply loads function generate_Dockerfile()
#Those are fixed params, to be moved in an etc file
export CVMFS_TRACES_DIR=$JOB_DIR/cvmfs-traces/
@@ -205,15 +240,16 @@ export CVMFS_EXPORT_DIR=$JOB_DIR/cvmfs-export/
export CVMFS_SHRINK_CONF=$JOB_DIR/generic_config.cern.ch.config
export DOCKER_BASE_IMAGE='gitlab-registry.cern.ch/cloud-infrastructure/cloud-benchmark-suite/hepworkloads-base:1.0'
SCRIPT_DIR=`dirname $0`
. $SCRIPT_DIR/generate_Dockerfile.sh
[ -z $HEP_WL_SPEC_FILE ] && HEP_WL_SPEC_FILE=''
[ -z $DOCKER_REGISTRY ] && DOCKER_REGISTRY=""
[ -z $BUILD_EVENT ] && BUILD_EVENT="all"
[ -z $MOUNT_CVMFS ] && MOUNT_CVMFS=0
[ -z $JOB_DIR ] && JOB_DIR=/tmp
#parameters to be passed by command line
#1: SPEC file path
#2: optional export DOCKER_REGISTRY gitlab-registry.cern.ch/giordano/hep-workloads
while getopts "hs:r:e:m" o; do
case ${o} in
s)
@@ -246,10 +282,11 @@ echo "-------------"
env | grep "CI_" | sort
[[ ( "$HEP_WL_SPEC_FILE" == "" ) ]] && fail "SPEC file not specified"
[ "$HEP_WL_SPEC_FILE" == "" ] && fail "SPEC file not specified"
[ ! -f $HEP_WL_SPEC_FILE ] && fail "SPEC file $HEP_WL_SPEC_FILE not found"
#Original HEP source dir
HEP_WL_SOURCE_DIR=`dirname "$HEP_WL_SPEC_FILE"`
HEP_WL_SOURCE_DIR=$(dirname "$HEP_WL_SPEC_FILE") # Original HEP source dir
mkdir -p $JOB_DIR/build-wl
cp -r $HEP_WL_SOURCE_DIR/* $JOB_DIR/build-wl
@@ -264,8 +301,9 @@ echo "-----------"
source "$HEP_WL_SPEC_FILE"
if [[ "$MOUNT_CVMFS" -gt 0 ]]; then
mount_cvmfs $CVMFS_REPOSITORIES || fail 'mount_cvmfs'
mount_cvmfs $CVMFS_REPOSITORIES || fail '[main.sh] mount_cvmfs'
fi
[[ "$BUILD_EVENT" != "none" ]] && execute_procedure "$BUILD_EVENT"
echo "[main.sh] finished at $(date)"
Loading