В Jenkins на кластере k8s с последним контейнером cloud-sdk сборка Docker завершается неудачно, когда в dockerfile передается инструкция ARG перед FROM в FROM? - PullRequest
0 голосов
/ 11 февраля 2019

Я запускаю 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) .

В чем здесь проблема?

...