Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
ebrains-spack-builds
Manage
Activity
Members
Labels
Plan
Issues
38
Issue boards
Milestones
Wiki
Code
Merge requests
29
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
EBRAINS RI
Tech Hub
Platform
EBRAINS Software Distribution
ebrains-spack-builds
Commits
a97dd76c
Commit
a97dd76c
authored
1 month ago
by
Eric Müller
Browse files
Options
Downloads
Patches
Plain Diff
feat(CI): add build-esd-image_JUSUF
parent
b128b6d6
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
.gitlab-ci.yml
+59
-0
59 additions, 0 deletions
.gitlab-ci.yml
with
59 additions
and
0 deletions
.gitlab-ci.yml
+
59
−
0
View file @
a97dd76c
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment