2017-07-12 1 views
0

Docker ermöglicht die --pull Flagge zu docker build, z. docker build --pull -t myimage .. Wie kann ich das Ziehen des Basis-Images mit einem Pipeline-Skript in meinem Jenkinsfile erzwingen? Auf diese Weise möchte ich sicherstellen, dass der Build trotz der lokal verfügbaren Version immer das neueste Container-Image verwendet.Jenkins/Docker: Wie Pull-Base-Bild vor dem Build erzwingen

node('docker') { 
    def app 

    stage('Checkout') { 
     checkout scm 
    } 

    stage('Build image') { 
     docker.withRegistry('https://myregistry.company.com', 'dcr-jenkins') { 
      app = docker.build "myimage" 
     } 
    } 

    stage('Publish image') { 
     docker.withRegistry('https://myregistry.company.com', 'dcr-jenkins') { 
      app.push("latest") 
     } 
    } 
} 

Antwort

0

additionalBuildArgs macht den Job.

Beispiel:

pipeline { 
    agent { 
     label "docker" 
    } 

    stages { 
     […] 

     stage('Build image') { 
      agent { 
       dockerfile { 
        reuseNode true 
        registryUrl "https://registry.comapny.com" 
        registryCredentialsId "dcr-jenkins" 
        additionalBuildArgs "--pull --build-arg APP_VERSION=${params.APP_VERSION}" 
        dir "installation/app" 
       } 
      } 

      steps { 
       script { 
        docker { 
         app = docker.build "company/app" 
        } 
       } 
      } 
     } 

     […] 
    } 

} 
0

docker rmi <image> am Anfang des Skripts, bevor docker build --pull. Das Bild wird lokal nicht existieren, wenn docker build --pull ausgeführt wird, so dass es jedes Mal neu geladen wird.

0

Die Straight-Forward-Antwort ist das zweite Argument zu docker.build

stage('Build image') { 
    docker.withRegistry('https://myregistry.company.com', 'dcr-jenkins') { 
     app = docker.build("myimage", "--pull .") 
    } 
} 

verwenden Wenn Sie es nicht, es nur Standardwerte liefern dann ., so dass, wenn Wenn Sie etwas weitergeben, müssen Sie auch den Kontext selbst mit einschließen.

Sie finden dies in der "Pipeline-Syntax - Referenz der globalen Variablen". Fügen Sie einfach /pipeline-syntax/globals am Ende einer Jenkins-URL (d. H. http://localhost:8080/job/myjob/pipeline-syntax/globals)

hinzu
Verwandte Themen