From 729a2f7ee4c1d25674cd795c561b4e23a5c251b1 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck <wdconinc@gmail.com> Date: Wed, 1 Nov 2023 20:57:50 +0000 Subject: [PATCH] feat: install most dependencies in cachable layer, before adding main --- .gitlab-ci.yml | 8 ++++++-- containers/jug/dev.Dockerfile | 29 ++++++++++++++++++++++++----- spack-environment/dev/spack.yaml | 2 ++ spack-environment/packages.yaml | 6 ++++++ spack-environment/prod/spack.yaml | 2 ++ 5 files changed, 40 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a861ead46..e3b25f54d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -337,8 +337,12 @@ jug_dev: --build-arg S3_SECRET_KEY=${S3_SECRET_KEY} --build-arg JUG_VERSION=${EXPORT_TAG}-${BUILD_TYPE}-$(git rev-parse HEAD) ${IF_BUILD_DEFAULT:+ - --build-arg JUGGLER_VERSION=${JUGGLER_VERSION} - --build-arg EICRECON_VERSION=${EICRECON_VERSION} + ${JUGGLER_VERSION:+--build-arg JUGGLER_VERSION=${JUGGLER_VERSION}} + ${EICRECON_VERSION:+--build-arg EICRECON_VERSION=${EICRECON_VERSION}} + } + ${IF_BUILD_NIGHTLY:+ + --build-arg JUGGLER_VERSION=main + --build-arg EICRECON_VERSION=main } --build-arg ENV=${ENV} --build-arg jobs=${JOBS} diff --git a/containers/jug/dev.Dockerfile b/containers/jug/dev.Dockerfile index 649fbbd62..3a85c9dd9 100644 --- a/containers/jug/dev.Dockerfile +++ b/containers/jug/dev.Dockerfile @@ -120,11 +120,26 @@ FROM spack as builder ## Setup our custom environment (secret mount for write-enabled mirror) COPY --from=spack-environment . /opt/spack-environment/ ARG ENV=dev -ARG JUGGLER_VERSION="main" +ENV SPACK_ENV=/opt/spack-environment/${ENV} +RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM} \ + --mount=type=cache,target=/var/cache/spack \ + --mount=type=secret,id=mirrors,target=/opt/spack/etc/spack/mirrors.yaml \ + source $SPACK_ROOT/share/spack/setup-env.sh \ + && export CCACHE_DIR=/ccache \ + && spack buildcache update-index local \ + && spack buildcache update-index eics3rw \ + && spack env activate --dir ${SPACK_ENV} \ + && make --jobs ${jobs} --keep-going --directory /opt/spack-environment \ + SPACK_ENV=${SPACK_ENV} \ + BUILDCACHE_MIRROR="local eics3rw" \ + && ccache --show-stats \ + && ccache --zero-stats + +## Setup our custom environment with custom versions (on top of cached layer) +ARG JUGGLER_VERSION="" +ARG EICRECON_VERSION="" ADD https://eicweb.phy.anl.gov/api/v4/projects/EIC%2Fjuggler/repository/tree?ref=${JUGGLER_VERSION} /tmp/juggler.json -ARG EICRECON_VERSION="main" ADD https://api.github.com/repos/eic/eicrecon/commits/${EICRECON_VERSION} /tmp/eicrecon.json -ENV SPACK_ENV=/opt/spack-environment/${ENV} RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM} \ --mount=type=cache,target=/var/cache/spack \ --mount=type=secret,id=mirrors,target=/opt/spack/etc/spack/mirrors.yaml \ @@ -133,8 +148,12 @@ RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM} \ && spack buildcache update-index local \ && spack buildcache update-index eics3rw \ && spack env activate --dir ${SPACK_ENV} \ - && spack add juggler@git.${JUGGLER_VERSION} \ - && spack add eicrecon@git.${EICRECON_VERSION} \ + && if [ -n ${JUGGLER_VERSION} ] ; then \ + spack rm juggler && spack add juggler@git.${JUGGLER_VERSION} ; \ + fi \ + && if [ -n ${EICRECON_VERSION} ] ; then \ + spack rm eicrecon && spack add eicrecon@git.${EICRECON_VERSION} ; \ + fi \ && make --jobs ${jobs} --keep-going --directory /opt/spack-environment \ SPACK_ENV=${SPACK_ENV} \ BUILDCACHE_MIRROR="local eics3rw" \ diff --git a/spack-environment/dev/spack.yaml b/spack-environment/dev/spack.yaml index 4a2dcd6d6..78a174a18 100644 --- a/spack-environment/dev/spack.yaml +++ b/spack-environment/dev/spack.yaml @@ -23,6 +23,7 @@ spack: - edm4eic - edm4hep - eic-smear + - eicrecon - eigen - emacs - fastjet @@ -37,6 +38,7 @@ spack: - imagemagick - irt - jana2 + - juggler - lcov - lhapdf - madx diff --git a/spack-environment/packages.yaml b/spack-environment/packages.yaml index 768817c00..624150fac 100644 --- a/spack-environment/packages.yaml +++ b/spack-environment/packages.yaml @@ -89,6 +89,9 @@ packages: eic-smear: require: - '@1.1.12' + eicrecon: + require: + - '@1.6.1' eigen: require: - '@3.4.0' @@ -146,6 +149,9 @@ packages: require: - '@2.1.1' - -ipo +podio +root +zmq + juggler: + require: + - '@10.1.0' lcov: require: - '@1.16' diff --git a/spack-environment/prod/spack.yaml b/spack-environment/prod/spack.yaml index 5e24e5615..1996195e8 100644 --- a/spack-environment/prod/spack.yaml +++ b/spack-environment/prod/spack.yaml @@ -7,6 +7,7 @@ spack: - cmake - dd4hep - edm4eic + - eicrecon - fastjet - fjcontrib - gaudi @@ -15,6 +16,7 @@ spack: - intel-tbb - irt - jana2 + - juggler - npsim -geocad - py-boto3 - py-jinja2 -- GitLab