ci(data-prepper): keep image layers on disposable build storage

This commit is contained in:
jenkins 2026-10-04 08:12:57 -05:00
parent d85642adc1
commit b51cbc2f3c

View File

@ -2,7 +2,7 @@ pipeline {
agent { agent {
kubernetes { kubernetes {
// Keep build I/O off the node's runtime USB drive. // Keep build I/O off the node's runtime USB drive.
workspaceVolume dynamicPVC(accessModes: 'ReadWriteOnce', requestsSize: '20Gi', storageClassName: 'ci-scratch') workspaceVolume dynamicPVC(accessModes: 'ReadWriteOnce', requestsSize: '40Gi', storageClassName: 'ci-scratch')
yaml """ yaml """
apiVersion: v1 apiVersion: v1
kind: Pod kind: Pod
@ -72,18 +72,45 @@ spec:
command: command:
- cat - cat
tty: true tty: true
- name: kaniko - name: dind
image: gcr.io/kaniko-project/executor:v1.23.2-debug image: registry.bstein.dev/bstein/docker@sha256:90c332cc40ecd5e5acfab2145c855fcefec411926655a3e7530649a2cb876c5a
command: securityContext:
- /busybox/cat privileged: true
tty: true env:
- name: DOCKER_TLS_CERTDIR
value: ""
args:
- --mtu=1400
- --host=unix:///var/run/docker.sock
- --host=tcp://127.0.0.1:2375
- --tls=false
volumeMounts:
- name: workspace-volume
mountPath: /var/lib/docker
subPath: .cache/docker
resources: resources:
requests: requests:
cpu: "100m" cpu: "75m"
memory: "1Gi" memory: "512Mi"
limits: limits:
cpu: "1500m" cpu: "1500m"
memory: "2Gi" memory: "2Gi"
- name: docker-client
image: registry.bstein.dev/bstein/docker@sha256:90c332cc40ecd5e5acfab2145c855fcefec411926655a3e7530649a2cb876c5a
command: ["cat"]
tty: true
env:
- name: DOCKER_HOST
value: tcp://127.0.0.1:2375
- name: DOCKER_TLS_CERTDIR
value: ""
resources:
requests:
cpu: "25m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"
""" """
} }
} }
@ -460,7 +487,7 @@ EOF
} }
stage('Build & Push') { stage('Build & Push') {
steps { steps {
container('kaniko') { container('docker-client') {
withCredentials([usernamePassword(credentialsId: 'harbor-robot-streaming', usernameVariable: 'HARBOR_USERNAME', passwordVariable: 'HARBOR_PASSWORD')]) { withCredentials([usernamePassword(credentialsId: 'harbor-robot-streaming', usernameVariable: 'HARBOR_USERNAME', passwordVariable: 'HARBOR_PASSWORD')]) {
sh ''' sh '''
set -euo pipefail set -euo pipefail
@ -469,27 +496,27 @@ EOF
if [ -z "${HARBOR_REPO:-}" ] || [ "${HARBOR_REPO}" = "registry.bstein.dev/monitoring/data-prepper" ]; then if [ -z "${HARBOR_REPO:-}" ] || [ "${HARBOR_REPO}" = "registry.bstein.dev/monitoring/data-prepper" ]; then
HARBOR_REPO="registry.bstein.dev/streaming/data-prepper" HARBOR_REPO="registry.bstein.dev/streaming/data-prepper"
fi fi
mkdir -p /kaniko/.docker # Docker's layer store is the disposable PVC, not the node runtime.
ref_host="$(echo "${HARBOR_REPO}" | cut -d/ -f1)" set +x
auth="$(printf "%s:%s" "${HARBOR_USERNAME}" "${HARBOR_PASSWORD}" | base64 | tr -d '\\n')" attempt=0
cat > /kaniko/.docker/config.json <<EOF until docker info >/dev/null 2>&1; do
{ attempt=$((attempt + 1))
"auths": { [ "${attempt}" -lt 60 ] || exit 1
"${ref_host}": { sleep 2
"auth": "${auth}" done
} export DOCKER_CONFIG="$(mktemp -d "${TMPDIR}/docker-auth.XXXXXX")"
} trap 'rm -rf "${DOCKER_CONFIG}"' EXIT
} ref_host="${HARBOR_REPO%%/*}"
EOF printf '%s' "${HARBOR_PASSWORD}" | docker login "${ref_host}" \
dest_args="--destination ${HARBOR_REPO}:${IMAGE_TAG}" --username "${HARBOR_USERNAME}" --password-stdin >/dev/null
docker build --platform linux/arm64 --pull --progress=plain \
--file "${WORKSPACE}/dockerfiles/Dockerfile.data-prepper" \
--tag "${HARBOR_REPO}:${IMAGE_TAG}" "${WORKSPACE}"
docker push "${HARBOR_REPO}:${IMAGE_TAG}"
if [ "${PUSH_LATEST}" = "true" ]; then if [ "${PUSH_LATEST}" = "true" ]; then
dest_args="${dest_args} --destination ${HARBOR_REPO}:latest" docker tag "${HARBOR_REPO}:${IMAGE_TAG}" "${HARBOR_REPO}:latest"
docker push "${HARBOR_REPO}:latest"
fi fi
/kaniko/executor \
--context "${WORKSPACE}" \
--dockerfile "${WORKSPACE}/dockerfiles/Dockerfile.data-prepper" \
--verbosity info \
${dest_args}
''' '''
} }
} }