From 699de009010e9b195b7a76a4ade433397ba3cc79 Mon Sep 17 00:00:00 2001
From: Wouter Deconinck <wdconinc@gmail.com>
Date: Sat, 25 May 2024 21:19:09 +0000
Subject: [PATCH] feat: allow for different builder and runtime images

---
 .github/workflows/build-push.yml |  6 ++++--
 .gitlab-ci.yml                   | 12 ++++++++----
 containers/jug/dev.Dockerfile    |  7 ++++---
 3 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/build-push.yml b/.github/workflows/build-push.yml
index 2c8d215d9..96d034bbf 100644
--- a/.github/workflows/build-push.yml
+++ b/.github/workflows/build-push.yml
@@ -114,7 +114,8 @@ jobs:
     strategy:
       matrix:
         include:
-        - BASE_IMAGE: debian_stable_base
+        - BUILDER_IMAGE: debian_stable_base
+          RUNTIME_IMAGE: debian_stable_base
           BUILD_IMAGE: dev
           PLATFORM: linux/amd64
           ENV: dev
@@ -208,7 +209,8 @@ jobs:
           labels: ${{ steps.meta.outputs.labels }}
           build-args: |
             DOCKER_REGISTRY=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/
-            BASE_IMAGE=${{ matrix.BASE_IMAGE }}
+            BUILDER_IMAGE=${{ matrix.BUILDER_IMAGE }}
+            RUNTIME_IMAGE=${{ matrix.RUNTIME_IMAGE }}
             BUILD_IMAGE=eic_${{ matrix.BUILD_IMAGE }}
             INTERNAL_TAG=${{ env.INTERNAL_TAG }}
             SPACK_ORGREPO=${{ steps.spack.outputs.orgrepo }}
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4bd176aeb..e56b72832 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -286,7 +286,8 @@ eic:
       - BUILD_TYPE:
         - default
         - nightly
-        BASE_IMAGE: debian_stable_base
+        BUILDER_IMAGE: debian_stable_base
+        RUNTIME_IMAGE: debian_stable_base
         BUILD_IMAGE: eic_
         PLATFORM: linux/amd64
         ENV:
@@ -296,7 +297,8 @@ eic:
 #      - BUILD_TYPE:
 #        - default
 #        - nightly
-#        BASE_IMAGE: oneapi_base
+#        BUILDER_IMAGE: oneapi_base
+#        RUNTIME_IMAGE: oneapi_base
 #        BUILD_IMAGE: oneapi_
 #        PLATFORM: linux/amd64
 #        ENV:
@@ -304,7 +306,8 @@ eic:
 #      - BUILD_TYPE:
 #        - default
 #        - nightly
-#        BASE_IMAGE: cuda_base_new
+#        BUILDER_IMAGE: cuda_base_new
+#        RUNTIME_IMAGE: cuda_base_new
 #        BUILD_IMAGE: cuda_
 #        PLATFORM: linux/amd64
 #        ENV:
@@ -367,7 +370,8 @@ eic:
                    --file containers/jug/dev.Dockerfile
                    --platform ${PLATFORM}
                    --build-arg DOCKER_REGISTRY=${CI_REGISTRY}/${CI_PROJECT_PATH}/
-                   --build-arg BASE_IMAGE=${BASE_IMAGE}
+                   --build-arg BUILDER_IMAGE=${BUILDER_IMAGE}
+                   --build-arg RUNTIME_IMAGE=${RUNTIME_IMAGE}
                    --build-arg INTERNAL_TAG=${INTERNAL_TAG}
                    --build-arg SPACK_ORGREPO=${SPACK_ORGREPO}
                    --build-arg SPACK_VERSION=${SPACK_VERSION}
diff --git a/containers/jug/dev.Dockerfile b/containers/jug/dev.Dockerfile
index 216b22a57..da1ce74d2 100644
--- a/containers/jug/dev.Dockerfile
+++ b/containers/jug/dev.Dockerfile
@@ -1,13 +1,14 @@
 #syntax=docker/dockerfile:1.4
 ARG DOCKER_REGISTRY="eicweb/"
-ARG BASE_IMAGE="debian_stable_base"
+ARG BUILDER_IMAGE="debian_stable_base"
+ARG RUNTIME_IMAGE="debian_stable_base"
 ARG INTERNAL_TAG="testing"
 
 ## ========================================================================================
 ## STAGE0: spack image
 ## EIC spack image with spack and eic-spack repositories
 ## ========================================================================================
-FROM ${DOCKER_REGISTRY}${BASE_IMAGE}:${INTERNAL_TAG} as spack
+FROM ${DOCKER_REGISTRY}${BUILDER_IMAGE}:${INTERNAL_TAG} as spack
 ARG TARGETPLATFORM
 
 ## With heredocs for multi-line scripts, we want to fail on error and the print failing line.
@@ -314,7 +315,7 @@ EOF
 ## STAGE 3
 ## Lean target image
 ## ========================================================================================
-FROM ${DOCKER_REGISTRY}${BASE_IMAGE}:${INTERNAL_TAG} as export
+FROM ${DOCKER_REGISTRY}${RUNTIME_IMAGE}:${INTERNAL_TAG} as runtime
 ARG TARGETPLATFORM
 
 LABEL maintainer="Sylvester Joosten <sjoosten@anl.gov>" \
-- 
GitLab