2017-09-27 4 views
0

Travailler sur un projet qui utilise maven comme outil de construction. Maintenant, lorsque vous utilisez Jenkins pour le déploiement, nous devons construire le projet dans un conteneur docker en utilisant le plugin Docker. Ma compréhension est que le projet devrait être construit à l'intérieur du conteneur et une fois fait il devrait être supprimé. J'essaie d'utiliser une commande similaire à: docker.image ("imageName"). Inside {} Maintenant, comment nous assurer que le conteneur est supprimé et monter un volume de sorte que le pot créé dans le cadre de la construction peut être consulté après la suppression du conteneur docker?Comment utiliser le plugin Jenkins Docker pour créer un projet maven dans un conteneur

Peut-être fournir des entrées sur la compréhension ci-dessus et un exemple de la commande ci-dessus ou de tout lien auquel faire référence?

Répondre

0

Je pense que ce sera bien si vous allez utiliser le travail pipeline. Ici vous pouvez vérifier mon exemple avec des commentaires

pipeline { 
stages { 
    stage('Build') { 
     agent { //here we select only docker build agents 
      docker { 
       image 'maven:latest' //container will start from this image 
       args '-v /root/.m2:/root/.m2' //here you can map local maven repo, this let you to reuse local artifacts 
      } 
     } 
     steps { 
      sh 'mvn -B -DskipTests clean package' //this command will be executed inside maven container 
     } 
    } 
    stage('Test') { //on this stage New container will be created, but current pipeline workspace will be remounted to it automatically 
     agent { 
      docker { 
       image 'maven:latest' 
       args '-v /root/.m2:/root/.m2' 
      } 
     } 
     steps { 
      sh 'mvn test' 
     } 
    } 
    stage ('Build docker image') { //here you can check how you can build even docker images inside container 
     agent { 
      docker { 
       image 'maven:latest' 
       args '-v /root/.m2:/root/.m2 -v /var/run/docker.sock:/var/run/docker.sock' //here we expose docker socket to container. Now we can build docker images in the same way as on host machine where docker daemon is installed 
      } 
     } 
     steps { 
      sh 'mvn -Ddocker.skip=false -Ddocker.host=unix:///var/run/docker.sock docker:build' //example of how to build docker image with pom.xml and fabric8 plugin 
     } 
    } 
} 

}

Cela fonctionne même si Jenkins s'exécuter dans un récipient avec Mounter jenkins_home de l'hôte. S'il vous plaît laissez-moi savoir si je peux fournir plus de détails utiles de mon expérience pour vous