@@ -11,6 +11,7 @@ pipeline {
1111 string(name : ' BRANCH_NAME' , defaultValue : ' main' , description : ' Branch to build' )
1212 string(name : ' GIT_COMMIT' , defaultValue : ' ' , description : ' Commit SHA to build, optional' )
1313 string(name : ' REPO_URL' , defaultValue : ' https://github.com/star-bnl/star-sw.git' , description : ' Repository URL' )
14+ choice(name : ' BUILDX_DRIVER' , choices : [' docker' , ' docker-container' ], description : ' Buildx driver to use for Jenkins debugging' )
1415 }
1516
1617 environment {
@@ -40,6 +41,7 @@ pipeline {
4041 echo " PARAM_BRANCH_NAME=${ params.BRANCH_NAME} "
4142 echo " PARAM_GIT_COMMIT=${ params.GIT_COMMIT} "
4243 echo " PARAM_REPO_URL=${ params.REPO_URL} "
44+ echo " PARAM_BUILDX_DRIVER=${ params.BUILDX_DRIVER} "
4345 echo " JOB_NAME=${ env.JOB_NAME} "
4446 echo " BUILD_NUMBER=${ env.BUILD_NUMBER} "
4547 echo " BUILD_URL=${ env.BUILD_URL} "
@@ -117,11 +119,51 @@ pipeline {
117119 echo "ARTIFACT_DIR=${ARTIFACT_DIR}"
118120 echo "STAR_BASE=${STAR_BASE}"
119121 echo "COMPILER=${COMPILER}"
122+ echo "BUILDX_DRIVER=${BUILDX_DRIVER}"
120123 echo "PATH=${PATH}"
121124 command -v docker
122125 docker --version
123126 docker info
124127 docker buildx version
128+ docker buildx ls
129+ docker context ls
130+ '''
131+ }
132+ }
133+
134+ stage(' Registry Diagnostics' ) {
135+ steps {
136+ sh '''
137+ set +e
138+ echo "=== Proxy environment ==="
139+ env | grep -iE '^(http|https|no)_proxy=' || true
140+
141+ echo "=== Resolver configuration ==="
142+ cat /etc/resolv.conf || true
143+
144+ for host in github.com ghcr.io registry-1.docker.io; do
145+ echo "=== DNS lookup: ${host} ==="
146+ getent hosts "${host}"
147+ echo "lookup_exit_code=$?"
148+
149+ echo "=== HTTPS probe: ${host} ==="
150+ curl -I --connect-timeout 10 --max-time 20 "https://${host}" || true
151+ done
152+
153+ echo "=== Docker host connectivity ==="
154+ docker info || true
155+ '''
156+ }
157+ }
158+
159+ stage(' Prefetch Base Image' ) {
160+ steps {
161+ sh '''
162+ set -euxo pipefail
163+ base_image="ghcr.io/star-bnl/star-spack:v0.3.0-${STAR_BASE}-${COMPILER}"
164+ echo "=== Pulling base image ${base_image} ==="
165+ docker pull "${base_image}"
166+ docker image inspect "${base_image}" --format '{{.Id}}'
125167 '''
126168 }
127169 }
@@ -133,11 +175,20 @@ pipeline {
133175 builder_name="star-sw-${BUILD_NUMBER}-${STAR_BASE}-${COMPILER}"
134176 echo "${builder_name}" > .buildx-builder-name
135177 docker buildx rm "${builder_name}" || true
136- docker buildx create \
137- --name "${builder_name}" \
138- --driver docker-container \
139- --driver-opt "env.BUILDKIT_STEP_LOG_MAX_SIZE=${BUILDKIT_STEP_LOG_MAX_SIZE}" \
140- --use
178+
179+ if [ "${BUILDX_DRIVER}" = "docker-container" ]; then
180+ docker buildx create \
181+ --name "${builder_name}" \
182+ --driver docker-container \
183+ --driver-opt "env.BUILDKIT_STEP_LOG_MAX_SIZE=${BUILDKIT_STEP_LOG_MAX_SIZE}" \
184+ --use
185+ else
186+ docker buildx create \
187+ --name "${builder_name}" \
188+ --driver docker \
189+ --use
190+ fi
191+
141192 docker buildx inspect "${builder_name}" --bootstrap
142193 '''
143194 }
@@ -158,6 +209,7 @@ pipeline {
158209 docker buildx build \
159210 --builder "${builder_name}" \
160211 --progress plain \
212+ --pull=false \
161213 --build-arg "starenv=${STAR_BASE}" \
162214 --build-arg "compiler=${COMPILER}" \
163215 --tag "${image_tag}" \
0 commit comments