ci(data-prepper): keep image layers on disposable build storage
This commit is contained in:
parent
d85642adc1
commit
b51cbc2f3c
@ -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}
|
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user