Jenkins-Kubernetes插件inm OpenShift仅jnlp容器有效

时间:2019-03-08 08:27:32

标签: jenkins kubernetes jenkins-pipeline openshift

我目前正在使用以下配置在OpenShift中构建管道

openshift:v3.6.173.0.140
詹金斯:2.017(使用来自https://github.com/openshift/jenkins的redhat图像)
Jenkins-Kubernetes插件1.12.2

作为Jenkins代理程序,我正在使用openshift jenkins模板提供的nodejs代理程序以及在其上构建的图像(例如,我还用打字稿编译器适配的一幅图像)

现在我想做的是使用多个容器运行pod(不仅是jnlp,还包括标准节点,go等容器)。现在根据文档,这应该不是问题(https://github.com/jenkinsci/kubernetes-plugin),因为我应该像这样将容器添加到我的podTemplate中

podTemplate(label: mylabel, cloud: 'openshift', 
  containers: [
    containerTemplate(
      name: "jnlp",
      resourceRequestMemory: "512Mi",
      resourceLimitMemory: "2048Mi",
      workingDir: "/home/default",
      tty: "false",
      imagePullPolicy: "Always",
      image: 'private-registry:5000/namespace/nodejs-tsc-jnlp-image:latest',
      args: '${computer.jnlpmac} ${computer.name}',
    ),
    containerTemplate(
      name: 'node',
      resourceRequestMemory: '512Mi',
      resourceLimitMemory: '2048Mi',
      workingDir: '/home/default',
      tty: 'true',
      imagePullPolicy: 'Always',
      image: 'node:alpine',
      command: 'cat'
    )
  ]
)

现在的问题是,这不起作用。为节点容器拉出图像工作正常,如果我使用 echo test 例如代替cat作为命令,test将显示在容器日志中,但是容器将通过并通过不执行管道中描述的任何操作。再次,完全按照文档中所述的方式编写

node(mylabel){
stage('TEST NODE'){
  container("node"){
    sh("echo test node")
  }
  container("jnlp"){
    sh("echo test jnlp")
  }
}

知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

我会尝试使用/bin/sh -ccat作为参数。