web-dev-qa-db-fra.com

Exécuter Jenkins Job dans un conteneur

J'ai plusieurs emplois Jenkins et plusieurs nœuds esclaves Jenkins (machines physiques). Ces esclaves fonctionnent tous dans Docker 1.12.1. J'aimerais que l'un de ces emplois s'exécute sur l'un de ces esclaves. Étant donné que ces tâches ont des exigences d'environnement différentes, j'ai pensé que je pouvais créer des images de menu fixe pour chacun des différents environnements, puis spécifier "dans" la tâche, le conteneur dans lequel la tâche serait exécutée. 

Est-ce possible? c.-à-d. spécifier dans ces travaux un conteneur de menu fixe spécifique dans lequel j'aimerais que ces travaux soient exécutés? À la fin du travail, les conteneurs seraient détruits et il ne resterait que les artefacts et les rapports.

Il y a plusieurs plugins docker qui existent dans Jenkins mais j'en ai encore trouvé un qui fait exactement ce que je veux.

6
Jon

Bien sûr, la réponse est Oui, c'est possible .

Étant donné le type de question, je ne peux que donner des indications.

jenkins-pipeline offre un moyen agréable de décrire vos pipelines en tant que code. Le plug-in docker s’intègre également à cela, de sorte que vous puissiez exécuter vos travaux dans un conteneur, par exemple.

// select a slave based on the label 'docker'
node('docker') {
  stage "Run in container (e.g. the php-7)"
  docker.image('php:7').inside {
    // run your command
    sh "phpunit"
  }
}

Il existe quelques ressources concernant jenkins-pipelinedocker qui vous aideront à démarrer.

8
StephenKing

J'ai trouvé le plugin que je cherchais.

https://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Docker+Custom+Build+Environment+Plugin

Cela fera ce que je veux. Cela me permettra de travailler dans un conteneur. Jusqu'ici, cela fonctionne bien.

0
Jon