Skip to content
Snippets Groups Projects
Commit a97dd76c authored by Eric Müller's avatar Eric Müller :mountain_bicyclist:
Browse files

feat(CI): add build-esd-image_JUSUF

parent b128b6d6
No related branches found
No related tags found
No related merge requests found
......@@ -264,6 +264,65 @@ sync-esd-image:
- if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH == "experimental_rel" || $CI_COMMIT_BRANCH =~ /^ebrains/) && $CI_PROJECT_PATH =~ /platform\/esd\/ebrains-spack-builds/ && $CI_PIPELINE_SOURCE != "schedule"
when: manual
# build test on JUSUF login node
build-esd-image_JUSUF:
stage: build
tags:
- esd_image_JUSUF
variables:
CI_SPACK_ENV: esd
SPACK_JOBS: 4
# we access the branch-specific cache here (and also update it!)
OCI_CACHE_PREFIX: ${HARBOR_HOST}/${HARBOR_PROJECT}/${CI_COMMIT_BRANCH}_jusuf
UPDATE_SPACK_OCI_CACHES: false
OCI_IMAGE_PREFIX: ${HARBOR_HOST}/${HARBOR_PROJECT}/${CI_COMMIT_BRANCH}_jusuf/image
INSTALLATION_ROOT: /esd
SANDBOX_ROOT_RELATIVE: esd_image
TMPDIR: /dev/shm/ecm_gitlab_ci
SANDBOX_ROOT: ${TMPDIR}/${SANDBOX_ROOT_RELATIVE}
SYSTEMNAME: image-jusuf
script:
# create a sandbox/image for performing an spack install inside based on some base image/install
- rm -rf $TMPDIR
- mkdir $TMPDIR || true
- apptainer build --fix-perms --force --sandbox ${SANDBOX_ROOT}/ docker://${BUILD_ENV_DOCKER_IMAGE}
# run installation script inside future container environment
# => DAG concretization, subsequent cache access + fetching and actual build should be separate steps
- mkdir --mode=0777 -p ${SANDBOX_ROOT}/${INSTALLATION_ROOT}
# begin of fixup for JUSUF
- mkdir --mode=0777 -p ${SANDBOX_ROOT}/p
- mkdir --mode=0777 -p ${SANDBOX_ROOT}/etc/FZJ
# end of fixup for JUSUF
- apptainer exec --writable --bind ${CI_PROJECT_DIR}:${INSTALLATION_ROOT} --cwd ${INSTALLATION_ROOT} ${SANDBOX_ROOT} bash ./install_spack_env.sh $SPACK_JOBS $INSTALLATION_ROOT ${INSTALLATION_ROOT} $CI_SPACK_ENV "" $UPDATE_SPACK_OCI_CACHES $OCI_CACHE_PREFIX
- echo "export SYSTEMNAME=${SYSTEMNAME}" >> ${SANDBOX_ROOT}/.singularity.d/env/90-environment.sh
- echo ". ${INSTALLATION_ROOT}/vendor/spack/var/spack/environments/${CI_SPACK_ENV}/load_env.sh" >> ${SANDBOX_ROOT}/.singularity.d/env/90-environment.sh
# begin of fixup for JUSUF
- rm -rf ${SANDBOX_ROOT}/p
- rm -rf ${SANDBOX_ROOT}/etc/FZJ
# end of fixup for JUSUF
# preparing to assemble the image: move in the CI project contents...
- shopt -s dotglob
- find . -maxdepth 1 -and -not -name "." -and -not -name "${SANDBOX_ROOT_RELATIVE}" -exec mv -t ${SANDBOX_ROOT}/${INSTALLATION_ROOT} {} \;
# convert to SIF image file
- apptainer build latest.sif "${SANDBOX_ROOT}"
after_script:
- mkdir -p $CI_PROJECT_DIR/spack_logs/installed $CI_PROJECT_DIR/spack_logs/not_installed
# for succesfully installed packages: keep the spack logs for any package modified during this CI job
- PKG_DIR=${SANDBOX_ROOT}/${INSTALLATION_ROOT}/spack/opt/spack/**/linux-ubuntu20.04-x86_64/gcc-10.3.0
- if cd $PKG_DIR; then find . \( -name ".spack" -o -name ".build" \) -exec cp -r --parents "{}" $CI_PROJECT_DIR/spack_logs/installed \;; fi
# for not succesfully installed packages: also keep the spack logs for any packages that failed
- if cd /tmp/$(whoami)/spack-stage/; then find . -maxdepth 2 \( -name "*.txt" -o -name ".install_time_tests" \) -exec cp -r --parents "{}" $CI_PROJECT_DIR/spack_logs/not_installed \;; fi
artifacts:
paths:
- spack_logs
when: always
timeout: 2 days
rules:
# branches that update the gitlab-runner upstream (read-only) installation and the spack OCI caches
- if: $CI_PIPELINE_SOURCE != "schedule" && $CI_PIPELINE_SOURCE != "merge_request_event"
#- if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH == "experimental_rel" || $CI_COMMIT_BRANCH =~ /^ebrains/) && $CI_PROJECT_PATH =~ /platform\/esd\/ebrains-spack-builds/ && $CI_PIPELINE_SOURCE != "schedule"
# when: manual
# update gitlab-runner upstream (read-only) installation
sync-gitlab-spack-instance:
stage: build
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment