我有一个Jenkinsfile,我正在其中尝试在容器内执行npm run test
。
当我使用inside
运行时会失败,但是当我使用withRun
运行时,它会按照我的意愿运行。
引用代码
与inside
stage('Test') {
docker.image('justinribeiro/chrome-headless').inside ("-p 9222:9222 --security-opt seccomp=$WORKSPACE/chrome.json") {
sh label:
'Running npm test',
script: '''
npm run test
'''
}
}
用
withRun
stage('Test') {
docker.image('justinribeiro/chrome-headless').withRun ("-p 9222:9222 --security-opt seccomp=$WORKSPACE/chrome.json") {
sh label:
'Running npm test',
script: '''
npm run test
'''
}
}
现在,我想了解它们之间的区别。
我观察到
inside
会添加卷并在容器上运行cat
,而withRun
不会。我还阅读了https://jenkins.io/doc/book/pipeline/docker/文档,但了解得还不够。
非常详细的解释将不胜感激。
谢谢。
最佳答案
从上面可以看出,sh
方法命令(特别是npm
命令)将在主机上执行withRun
,但在容器内执行inside
。
关于docker - Jenkinsfile中的 “withRun”和 “inside”有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57478006/