我有一个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/

10-12 03:56