Jenkinsfile:在交互模式下运行docker.image(<myimagename>)

时间:2018-02-14 05:55:04

标签: docker jenkins-pipeline

目前,当在jenkinsfile中运行docker.image(...)。inside时,jenkins以分离(守护进程)模式启动容器。有人可以帮助我如何让jenkins以交互模式运行容器吗?

我试着给#34; -it&#34; docker.image(...).inside(-it)中的选项,但我得到以下错误:

  

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:脚本不允许使用staticMethod org.codehaus.groovy.runtime.ScriptBytecodeAdapter unaryMinus java.lang.Object

提前致谢。

1 个答案:

答案 0 :(得分:1)

你不应该在Jenkins上以交互模式使用Docker容器。我不知道这是否可能,但即使它是,它只要等待用户输入就会阻止构建槽。而是使用无代理输入阶段来询问您要提供给Docker容器的参数:

pipeline {
  agent none
  stage('Ask for input') {
    agent none
    steps {
      script {
        env.MY_PARAMETER = input ...
      }
    }
  }
  stage('Run JMeter') {
    agent { label 'docker' }
    steps {
      script {
        // Pass MY_PARAMETER into Docker container
        docker.image(...).inside("--env MY_PARAMETER ${env.MY_PARAMETER}") {
          ...
        }
      }
    }
  }
}