Je crée Jenkins Pipeline pour courir Terraform sur un conteneur Docker.
Voici mon script de pipeline.
pipeline {
agent {
docker {
image 'hashicorp/terraform:full'
args '--entrypoint=/bin/bash'
}
}
stages {
stage('execute') {
steps {
sh 'terraform --version'
}
}
}
}
Lors de l'exécution de ce pipeline sur Jenkins, je reçois l'erreur ci-dessous.
$ docker run -t -d -u 995:993 --entrypoint=/bin/bash -w /var/lib/jenkins/workspace/terraform -v /var/lib/jenkins/workspace/terraform:/var/lib/jenkins/workspace/terraform:rw,z -v /var/lib/jenkins/workspace/terraform@tmp:/var/lib/jenkins/workspace/terraform@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** hashicorp/terraform:full cat
$ docker top a0b801d657d0fffdfa95c387564128b130ab1d28569ad59bd0151c8b7faf6ffd -eo pid,comm
Java.io.IOException: Failed to run top 'a0b801d657d0fffdfa95c387564128b130ab1d28569ad59bd0151c8b7faf6ffd'. Error: Error response from daemon: Container a0b801d657d0fffdfa95c387564128b130ab1d28569ad59bd0151c8b7faf6ffd is not running
Cela semble être comme Jenkins Ajoutez une commande CAT pour exécuter l'image HASHICORP/TERRAFORM: Full.
Notez que, j'ai remplacé le point d'entrée à / bin/bash à l'aide - entréePoint =/bin/bash car HASHICORP/TERRAFORM: complet déjà a un point d'entrée défini.
dans mon cas, le entrypoint
a fait des ennuis pour moi, donc je devais l'écraser en passant en passant entrypoint
argument à la méthode inside
comme ici:
pipeline {
agent {
label 'some_label'
}
stages {
stage('execute') {
steps {
script {
img = docker.build("docker_image_name:docker_image_tag")
img.inside('--entrypoint= -e NODE_ENV=test') {
sh 'npm install --dev'
sh 'npm run test'
}
}
}
}
}
}
cet exemple est comme @ s.spieker commentaire mais avec une syntaxe différente.
remarque: les commandes NPM comme npm test
Peut être différent entre les projets Node JS, vous devrez donc obtenir les commandes pertinentes du développeur.
si cet exemple ne fonctionne toujours pas pour vous, vous devez probablement changer votre image Docker entrypoint
comme ici: https://github.com/sonarsource/sonar-scanner-clidiker/pull/31/Fichiers
vous pouvez en apprendre davantage sur le plugin Docker-Flow ici: https://docs.cloudbees.com/docs/admin-resources/latest/plugins/docker-workflow
quelques exemples supplémentaires: Jenkins: Comment utiliser Junit Plugin lorsque des constructions Maven se produisent dans le conteneur Docker