Skip to content
Snippets Groups Projects
Commit c4310b7a authored by Wouter Deconinck's avatar Wouter Deconinck
Browse files

feat: spack arch map, key on docker TARGETPLATFORM

parent a96c38ea
No related branches found
No related tags found
1 merge request!457feat: spack arch map, key on docker TARGETPLATFORM
...@@ -194,14 +194,19 @@ base: ...@@ -194,14 +194,19 @@ base:
matrix: matrix:
- BASE_IMAGE: amd64/debian:testing-20220822-slim - BASE_IMAGE: amd64/debian:testing-20220822-slim
BUILD_IMAGE: amd64_debian_testing_base BUILD_IMAGE: amd64_debian_testing_base
PLATFORM: linux/amd64
- BASE_IMAGE: amd64/ubuntu:20.04 - BASE_IMAGE: amd64/ubuntu:20.04
BUILD_IMAGE: amd64_ubuntu_base BUILD_IMAGE: amd64_ubuntu_base
PLATFORM: linux/amd64
- BASE_IMAGE: intel/oneapi-hpckit:2022.3.0-devel-ubuntu20.04 - BASE_IMAGE: intel/oneapi-hpckit:2022.3.0-devel-ubuntu20.04
BUILD_IMAGE: oneapi_base BUILD_IMAGE: oneapi_base
PLATFORM: linux/amd64
- BASE_IMAGE: nvidia/cuda:11.8.0-devel-ubuntu20.04 - BASE_IMAGE: nvidia/cuda:11.8.0-devel-ubuntu20.04
BUILD_IMAGE: cuda_base BUILD_IMAGE: cuda_base
PLATFORM: linux/amd64
- BASE_IMAGE: arm64v8/debian:testing-20220822-slim - BASE_IMAGE: arm64v8/debian:testing-20220822-slim
BUILD_IMAGE: arm64v8_debian_testing_base BUILD_IMAGE: arm64v8_debian_testing_base
PLATFORM: linux/arm64/v8
# - BASE_IMAGE: debian:testing-20220822-slim # - BASE_IMAGE: debian:testing-20220822-slim
# BUILD_IMAGE: debian_testing_base_multiarch # BUILD_IMAGE: debian_testing_base_multiarch
# PLATFORM: linux/amd64,linux/arm64/v8 # PLATFORM: linux/amd64,linux/arm64/v8
...@@ -225,16 +230,16 @@ jug_dev:default: ...@@ -225,16 +230,16 @@ jug_dev:default:
matrix: matrix:
- BASE_IMAGE: amd64_debian_testing_base - BASE_IMAGE: amd64_debian_testing_base
BUILD_IMAGE: jug_dev BUILD_IMAGE: jug_dev
SPACK_ARCH: x86_64 PLATFORM: linux/amd64
- BASE_IMAGE: arm64v8_debian_testing_base - BASE_IMAGE: arm64v8_debian_testing_base
BUILD_IMAGE: jug_dev_arm64v8 BUILD_IMAGE: jug_dev_arm64v8
SPACK_ARCH: aarch64 PLATFORM: linux/arm64/v8
# - BASE_IMAGE: oneapi_base # - BASE_IMAGE: oneapi_base
# BUILD_IMAGE: jug_dev_oneapi # BUILD_IMAGE: jug_dev_oneapi
# SPACK_ARCH: x86_64 # PLATFORM: linux/amd64
# - BASE_IMAGE: cuda_base_new # - BASE_IMAGE: cuda_base_new
# BUILD_IMAGE: jug_dev_cuda # BUILD_IMAGE: jug_dev_cuda
# SPACK_ARCH: x86_64 # PLATFORM: linux/amd64
extends: .build extends: .build
stage: jug stage: jug
needs: needs:
...@@ -260,8 +265,8 @@ jug_dev:default: ...@@ -260,8 +265,8 @@ jug_dev:default:
-t ${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:builder-${INTERNAL_TAG} -t ${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:builder-${INTERNAL_TAG}
--target=builder --target=builder
-f containers/jug/dev.Dockerfile -f containers/jug/dev.Dockerfile
${PLATFORM:+--platform ${PLATFORM}}
--build-arg BASE_IMAGE="${BASE_IMAGE}" --build-arg BASE_IMAGE="${BASE_IMAGE}"
--build-arg SPACK_ARCH="${SPACK_ARCH}"
--build-arg SPACK_ORGREPO="${SPACK_ORGREPO}" --build-arg SPACK_ORGREPO="${SPACK_ORGREPO}"
--build-arg SPACK_VERSION="${SPACK_VERSION}" --build-arg SPACK_VERSION="${SPACK_VERSION}"
--build-arg SPACK_CHERRYPICKS="${SPACK_CHERRYPICKS}" --build-arg SPACK_CHERRYPICKS="${SPACK_CHERRYPICKS}"
...@@ -277,8 +282,8 @@ jug_dev:default: ...@@ -277,8 +282,8 @@ jug_dev:default:
## now build our image ## now build our image
- docker buildx build --load -t ${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${INTERNAL_TAG} ${CACHE_FLAG} - docker buildx build --load -t ${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${INTERNAL_TAG} ${CACHE_FLAG}
-f containers/jug/dev.Dockerfile -f containers/jug/dev.Dockerfile
${PLATFORM:+--platform ${PLATFORM}}
--build-arg BASE_IMAGE="${BASE_IMAGE}" --build-arg BASE_IMAGE="${BASE_IMAGE}"
--build-arg SPACK_ARCH="${SPACK_ARCH}"
--build-arg SPACK_ORGREPO="${SPACK_ORGREPO}" --build-arg SPACK_ORGREPO="${SPACK_ORGREPO}"
--build-arg SPACK_VERSION="${SPACK_VERSION}" --build-arg SPACK_VERSION="${SPACK_VERSION}"
--build-arg SPACK_CHERRYPICKS="${SPACK_CHERRYPICKS}" --build-arg SPACK_CHERRYPICKS="${SPACK_CHERRYPICKS}"
...@@ -316,13 +321,13 @@ jug_xl:default: ...@@ -316,13 +321,13 @@ jug_xl:default:
matrix: matrix:
- BASE_IMAGE: jug_dev - BASE_IMAGE: jug_dev
BUILD_IMAGE: jug_xl BUILD_IMAGE: jug_xl
DOCKER_ARCH: amd64 PLATFORM: linux/amd64
- BASE_IMAGE: jug_dev_arm64v8 - BASE_IMAGE: jug_dev_arm64v8
BUILD_IMAGE: jug_xl_arm64v8 BUILD_IMAGE: jug_xl_arm64v8
DOCKER_ARCH: arm64v8 PLATFORM: linux/arm64/v8
# - BASE_IMAGE: jug_dev_oneapi # - BASE_IMAGE: jug_dev_oneapi
# BUILD_IMAGE: jug_xl_oneapi # BUILD_IMAGE: jug_xl_oneapi
# DOCKER_ARCH: amd64 # PLATFORM: linux/amd64
extends: .build extends: .build
stage: jug stage: jug
needs: needs:
...@@ -333,6 +338,7 @@ jug_xl:default: ...@@ -333,6 +338,7 @@ jug_xl:default:
- cp detectors.yaml containers/jug - cp detectors.yaml containers/jug
- docker build -t ${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${INTERNAL_TAG} - docker build -t ${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${INTERNAL_TAG}
-f containers/jug/xl.Dockerfile -f containers/jug/xl.Dockerfile
${PLATFORM:+--platform ${PLATFORM}}
--build-arg BASE_IMAGE=${BASE_IMAGE} --build-arg BASE_IMAGE=${BASE_IMAGE}
--build-arg INTERNAL_TAG=${INTERNAL_TAG} --build-arg INTERNAL_TAG=${INTERNAL_TAG}
--build-arg JUGGLER_VERSION=${JUGGLER_VERSION} --build-arg JUGGLER_VERSION=${JUGGLER_VERSION}
...@@ -345,13 +351,13 @@ jug_xl:nightly: ...@@ -345,13 +351,13 @@ jug_xl:nightly:
matrix: matrix:
- BASE_IMAGE: jug_dev - BASE_IMAGE: jug_dev
BUILD_IMAGE: jug_xl BUILD_IMAGE: jug_xl
DOCKER_ARCH: amd64 PLATFORM: linux/amd64
- BASE_IMAGE: jug_dev_arm64v8 - BASE_IMAGE: jug_dev_arm64v8
BUILD_IMAGE: jug_xl_arm64v8 BUILD_IMAGE: jug_xl_arm64v8
DOCKER_ARCH: arm64v8 PLATFORM: linux/arm64/v8
# - BASE_IMAGE: jug_dev_oneapi # - BASE_IMAGE: jug_dev_oneapi
# BUILD_IMAGE: jug_xl_oneapi # BUILD_IMAGE: jug_xl_oneapi
# DOCKER_ARCH: amd64 # PLATFORM: linux/amd64
extends: .build extends: .build
stage: jug stage: jug
rules: rules:
...@@ -368,6 +374,7 @@ jug_xl:nightly: ...@@ -368,6 +374,7 @@ jug_xl:nightly:
- cp detectors.yaml containers/jug - cp detectors.yaml containers/jug
- docker build -t ${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${NIGHTLY_TAG} - docker build -t ${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${NIGHTLY_TAG}
-f containers/jug/xl.Dockerfile -f containers/jug/xl.Dockerfile
${PLATFORM:+--platform ${PLATFORM}}
--build-arg BASE_IMAGE=${BASE_IMAGE} --build-arg BASE_IMAGE=${BASE_IMAGE}
--build-arg INTERNAL_TAG=${INTERNAL_TAG} --build-arg INTERNAL_TAG=${INTERNAL_TAG}
--build-arg JUG_VERSION=nightly-$(date +%Y-%m-%d_%H-%M-%S)-${INTERNAL_TAG}-$(git rev-parse HEAD) --build-arg JUG_VERSION=nightly-$(date +%Y-%m-%d_%H-%M-%S)-${INTERNAL_TAG}-$(git rev-parse HEAD)
......
...@@ -8,6 +8,7 @@ ARG INTERNAL_TAG="testing" ...@@ -8,6 +8,7 @@ ARG INTERNAL_TAG="testing"
## EIC builder image with spack ## EIC builder image with spack
## ======================================================================================== ## ========================================================================================
FROM ${DOCKER_REGISTRY}${BASE_IMAGE}:${INTERNAL_TAG} as builder FROM ${DOCKER_REGISTRY}${BASE_IMAGE}:${INTERNAL_TAG} as builder
ARG TARGETPLATFORM
## install some extra spack dependencies ## install some extra spack dependencies
RUN --mount=type=cache,target=/var/cache/apt \ RUN --mount=type=cache,target=/var/cache/apt \
...@@ -23,7 +24,6 @@ RUN --mount=type=cache,target=/var/cache/apt \ ...@@ -23,7 +24,6 @@ RUN --mount=type=cache,target=/var/cache/apt \
## Setup spack ## Setup spack
## parts: ## parts:
ARG SPACK_ARCH="x86_64"
ENV SPACK_ROOT=/opt/spack ENV SPACK_ROOT=/opt/spack
ARG SPACK_ORGREPO="spack/spack" ARG SPACK_ORGREPO="spack/spack"
ARG SPACK_VERSION="develop" ARG SPACK_VERSION="develop"
...@@ -39,17 +39,22 @@ RUN git clone https://github.com/${SPACK_ORGREPO}.git ${SPACK_ROOT} \ ...@@ -39,17 +39,22 @@ RUN git clone https://github.com/${SPACK_ORGREPO}.git ${SPACK_ROOT} \
&& ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \
/usr/sbin/interactive-shell \ /usr/sbin/interactive-shell \
&& ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \
/usr/sbin/spack-env \ /usr/sbin/spack-env
&& export PATH=${PATH}:${SPACK_ROOT}/bin \
&& spack config --scope site add "packages:all:require:arch=${SPACK_ARCH}" \ SHELL ["docker-shell"]
RUN declare -A arch=( \
["linux/amd64"]="x86_64" \
["linux/arm64"]="aarch64" \
) \
&& arch=${arch[${TARGETPLATFORM}]} \
&& spack config --scope site add "packages:all:require:arch=${arch}" \
&& spack config blame packages \ && spack config blame packages \
&& spack config --scope site add "config:suppress_gpg_warnings:true" \ && spack config --scope site add "config:suppress_gpg_warnings:true" \
&& spack config --scope site add "config:build_jobs:64" \ && spack config --scope site add "config:build_jobs:64" \
&& spack config --scope site add "config:install_tree:root:/opt/software" \ && spack config --scope site add "config:install_tree:root:/opt/software" \
&& spack config blame config && spack config blame config
SHELL ["docker-shell"]
## Setup spack buildcache mirrors, including an internal ## Setup spack buildcache mirrors, including an internal
## spack mirror using the docker build cache, and ## spack mirror using the docker build cache, and
## a backup mirror on the internal B010 network ## a backup mirror on the internal B010 network
...@@ -211,6 +216,7 @@ COPY profile.d/z11_jug_env.sh /etc/profile.d ...@@ -211,6 +216,7 @@ COPY profile.d/z11_jug_env.sh /etc/profile.d
COPY singularity.d /.singularity.d COPY singularity.d /.singularity.d
## Add minio client into /usr/local/bin ## Add minio client into /usr/local/bin
## FIXME: This should download .../linux-arm64/mc for arm64.
ADD https://dl.min.io/client/mc/release/linux-amd64/mc /usr/local/bin ADD https://dl.min.io/client/mc/release/linux-amd64/mc /usr/local/bin
RUN chmod a+x /usr/local/bin/mc RUN chmod a+x /usr/local/bin/mc
...@@ -219,10 +225,11 @@ RUN chmod a+x /usr/local/bin/mc ...@@ -219,10 +225,11 @@ RUN chmod a+x /usr/local/bin/mc
## Lean target image ## Lean target image
## ======================================================================================== ## ========================================================================================
FROM ${DOCKER_REGISTRY}${BASE_IMAGE}:${INTERNAL_TAG} FROM ${DOCKER_REGISTRY}${BASE_IMAGE}:${INTERNAL_TAG}
ARG TARGETPLATFORM
LABEL maintainer="Sylvester Joosten <sjoosten@anl.gov>" \ LABEL maintainer="Sylvester Joosten <sjoosten@anl.gov>" \
name="jug_xl" \ name="jug_xl" \
march="amd64" march="$TARGETPLATFORM"
## copy over everything we need from staging in a single layer :-) ## copy over everything we need from staging in a single layer :-)
RUN --mount=from=staging,target=/staging \ RUN --mount=from=staging,target=/staging \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment