1

我在使用Jenkins声明性管道在Docker容器中运行shell命令时遇到问题。使用码头工作流程插件。它似乎找不到命令'猫',暗示路径问题。我已经将任务限制在一个简单的任务(env shell命令)中,在一个非常简单的图像(高山)中,并验证了/ bin/cat的工作原理。我的错误/误解是什么?Jenkins码头工作流程插件在没有PATH的情况下执行

更新:我包括詹金斯生成的整个命令。我没有添加所有这些额外的参数,由于某些原因,詹金斯似乎将他们注入我的控制之外。

$ docker run -t -d -u 496:493 -w /jenkins/workspace/[email protected] -v /jenkins/workspace/[email protected]:/jenkins/workspace/[email protected]:rw -v /jenkins/workspace/[email protected]@tmp:/jenkins/workspace/[email protected]@tmp:rw -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 ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat alpine 
[Pipeline] // withDockerContainer 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] } 
[Pipeline] // stage 
[Pipeline] } 
[Pipeline] // withEnv 
[Pipeline] } 
[Pipeline] // withCredentials 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] } 
[Pipeline] // withEnv 
[Pipeline] End of Pipeline 
java.io.IOException: Failed to run image 'alpine'. Error: docker: Error response from daemon: Container command 'cat' not found or does not exist.. 
at org.jenkinsci.plugins.docker.workflow.client.DockerClient.run(DockerClient.java:125) 

这里是我的流水线阶段:

stage("test") { 
    agent { 
    docker { 
     image 'alpine' 
     label 'docker-enabled' 
    } 
    } 
    steps { 
    sh 'env' 
    } 
} 
+0

如果你在linux上运行,那么'cat/etc/issue'的结果是什么? – Avi

+0

尝试运行'echo $ PATH'来查看路径是什么。如果路径没有正确设置。 '搬运工运行--name ALP -dt高山cat'和'搬运工EXEC ALP SH -c “ENV”'给我: 'HOSTNAME = a2b6eeb0788a SHLVL = 1个 HOME = /根 PATH =的/ usr /本地/ sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin PWD =/ ' – Rik

+0

这是Jenkins特定的失败。当我从命令行运行时,Cat在执行路径上。要求输出 - '$搬运工运行-id --entrypoint猫高山3719b36a40ecc36eada4674def442b2140f22ed2aec030390acd2ef838763722 $搬运工EXEC 3719猫的/ etc /问题 欢迎高山的Linux 3.4内核 \ r上的\ M(\ L)' –

回答

0

问题通过升级到码头工人流水线插件的版本1.10解析(从1.9.1)。工作代码:

pipeline { 
    agent none 
     stages { 
     stage('Example') { 
      agent { 
       docker { 
        label 'docker' 
        image 'alpine'      
       } 
      } 
      steps { 
       sh 'env' 
      } 
     } 
    } 
}