web-dev-qa-db-fra.com

Jenkins Pipeline docker.build () donne l'erreur '"docker build" nécessite exactement 1 argument (s)'

Avec ce script Jenkins Pipeline minimal

node {
  docker.build("foo", "--build-arg x=y")
}

Je reçois une erreur déroutante

"docker build" nécessite exactement 1 argument (s).

Mais selon la documentation, la signature de docker.build() est build(image[, args]) (de Jenkins /job/dockerbug/pipeline-syntax/globals#docker)

build(image[, args])

Exécute la construction du docker pour créer et baliser l'image spécifiée à partir d'un Dockerfile dans le répertoire en cours. Des arguments supplémentaires peuvent être ajoutés, tels que '-f Dockerfile.other --pull --build-arg http_proxy=http://192.168.1.1:3128 .'. Comme la construction de docker, les arguments doivent se terminer par le contexte de construction. Renvoie l'objet Image résultant. Enregistre une empreinte digitale FROM dans la génération.

Que se passe-t-il?

15
John Carter

Ma confusion était due au fait que le message d'erreur provient en fait de Docker, pas de Jenkins.

Docker donne cette erreur si vous ne spécifiez pas de contexte de construction (comme indiqué dans les documents ci-dessus).

Le correctif consiste simplement à ajouter . à la fin du paramètre args comme dans l'exemple, par exemple:

node {
  docker.build("foo", "--build-arg x=y .")
}

Voir docker: "build" nécessite 1 argument. Voir 'docker build --help'

31
John Carter