Я запускаю Jenkins
поверх кластера Kubernetes с подключаемым модулем Kubernetes.Я использую контейнер в моем podTemplate
с изображением самого последнего google/cloud-sdk
.
С помощью cloud-sdk
я помещаю встроенный образ докера в хранилище.
Урезанная версия конвейера:
podTemplate(label: label,
containers: [
containerTemplate(name: 'gcloud', image: 'google/cloud-sdk:latest', command: 'cat', ttyEnabled: true),
],
volumes: [
hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')
]) {
node(label) {
...
stage('Develop deployment') {
container('gcloud') {
withCredentials([file(credentialsId: 'google-service-account-key', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) {
sh """#!/bin/bash
set -e
# setup gcloud setting
...
docker build --build-arg IMAGE_PREFIX="$GCLOUD_REGION/$GCLOUD_PROJECT" --build-arg TAG=$2 -f $DOCKERFILE -t $1 .
# push image to gcloud
...
"""
}
}
}
}
}
В образе докера используется ARG
для префикса базовых образов:
ARG IMAGE_PREFIX
ARG TAG
FROM ${IMAGE_PREFIX}/client:${TAG} as some-client
...
Сборка докера завершается неудачно с Please provide a source image with
из prior to commit
.
Я проверил версию докера в образе cloud-sdk
и Docker, используемый в узлах Kubernetes, и все они обновлены, по крайней мере, они более новые, чем версия, в которой эта функция была введена (с использованием ARG
до FROM
) .
В чем здесь проблема?