From ccc0e22813ba0269d0981ecc8d48e027236fc89a Mon Sep 17 00:00:00 2001 From: Wouter Deconinck <wdconinc@gmail.com> Date: Sun, 17 Dec 2023 20:57:11 +0000 Subject: [PATCH] feat: use oci build cache on eicweb and ghcr --- containers/jug/dev.Dockerfile | 12 ++---------- mirrors.yaml.in | 12 ++++++++++++ spack-environment/Makefile | 10 +++++++--- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/containers/jug/dev.Dockerfile b/containers/jug/dev.Dockerfile index dfa5e58e3..48ce4e6da 100644 --- a/containers/jug/dev.Dockerfile +++ b/containers/jug/dev.Dockerfile @@ -70,14 +70,6 @@ spack compiler find --scope site spack config blame compilers EOF -## Setup local buildcache mirrors -RUN --mount=type=cache,target=/var/cache/spack <<EOF -set -e -spack mirror add local /var/cache/spack/mirror/${SPACK_VERSION} -spack buildcache update-index local -spack mirror list -EOF - ## Setup eics3 buildcache mirrors ## - this always adds the read-only mirror to the container ## - the write-enabled mirror is provided later as a secret mount @@ -144,13 +136,13 @@ RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM} \ <<EOF set -e export CCACHE_DIR=/ccache -spack buildcache update-index local +find /var/cache/spack/blobs/sha256/ -atime +7 -delete spack buildcache update-index eics3rw spack env activate --dir ${SPACK_ENV} spack add juggler@git.${JUGGLER_VERSION} spack add eicrecon@git.${EICRECON_VERSION} spack concretize --fresh --force --quiet -make --jobs ${jobs} --keep-going --directory /opt/spack-environment SPACK_ENV=${SPACK_ENV} BUILDCACHE_MIRROR="local eics3rw" +make --jobs ${jobs} --keep-going --directory /opt/spack-environment SPACK_ENV=${SPACK_ENV} BUILDCACHE_MIRROR_ONLY_PACKAGE="eics3rw" BUILDCACHE_MIRROR_DEPENDENCIES="eicweb ghcr" ccache --show-stats ccache --zero-stats EOF diff --git a/mirrors.yaml.in b/mirrors.yaml.in index 369db4061..d8999187b 100644 --- a/mirrors.yaml.in +++ b/mirrors.yaml.in @@ -1,4 +1,16 @@ mirrors: + eicweb: + url: oci://${CI_REGISTRY}/${CI_PROJECT_PATH}/spack-${SPACK_VERSION} + push: + access_pair: + - ${CI_REGISTRY_USER} + - ${CI_REGISTRY_PASSWORD} + ghcr: + url: oci://ghcr.io/eic/spack-${SPACK_VERSION} + push: + access_pair: + - ${GITHUB_REGISTRY_USER} + - ${GITHUB_REGISTRY_TOKEN} eics3rw: fetch: url: s3://eictest/EPIC/spack/${SPACK_VERSION} diff --git a/spack-environment/Makefile b/spack-environment/Makefile index 42f6fb695..4492e0a9f 100644 --- a/spack-environment/Makefile +++ b/spack-environment/Makefile @@ -7,7 +7,9 @@ export SPACK_COLOR = always SPACK_ENV ?= dev -BUILDCACHE_MIRROR := +BUILDCACHE_MIRROR_ONLY_PACKAGE := +BUILDCACHE_MIRROR_DEPENDENCIES := +BUILDCACHE_OCI_BASE_IMAGE := ghcr.io/eic/debian:stable-slim .PHONY: all clean @@ -18,11 +20,13 @@ include $(SPACK_ENV)/spack.mk endif $(SPACK_ENV)/push: $(addprefix $(SPACK_ENV)/push/,$($(SPACK_ENV)/SPACK_PACKAGE_IDS)) - $(foreach buildcache, $(BUILDCACHE_MIRROR), $(SPACK) buildcache update-index $(buildcache) ;) + $(foreach buildcache, $(BUILDCACHE_MIRROR_ONLY_PACKAGE), $(SPACK) buildcache update-index $(buildcache) ;) + $(foreach buildcache, $(BUILDCACHE_MIRROR_DEPENDENCIES), $(SPACK) buildcache update-index $(buildcache) ;) $(SPACK_ENV)/push/%: $(SPACK_ENV)/install/% @mkdir -p $(dir $@) - $(foreach buildcache, $(BUILDCACHE_MIRROR), $(SPACK) buildcache push --only=package --unsigned $(buildcache) /$(HASH) ;) # push $(SPEC) + $(foreach buildcache, $(BUILDCACHE_MIRROR_ONLY_PACKAGE), $(SPACK) buildcache push --only=package --unsigned $(buildcache) /$(HASH) ;) # push $(SPEC) + $(foreach buildcache, $(BUILDCACHE_MIRROR_DEPENDENCIES), $(SPACK) buildcache push --unsigned --base-image $(BUILDCACHE_OCI_BASE_IMAGE) $(buildcache) /$(HASH) | grep -v "Using cached archive" ;) # push $(SPEC) @touch $@ $(SPACK_ENV)/spack.lock: $(SPACK_ENV)/spack.yaml Makefile -- GitLab