web-dev-qa-db-fra.com

Jenkins Docker Conteneur ajoute toujours la commande CAT

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.

10
Param

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

0
dsaydon