繁体   English   中英

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

[英]Jenkins - Kubernetes Plugin inm OpenShift. Only jnlp containers work

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

openshift:v3.6.173.0.140
詹金斯(Jenkins):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'
    )
  ]
)

现在的问题是,这不起作用。 为节点容器拉出图像工作正常,如果我使用回声测试 (例如cat)代替命令cat,则会在容器日志中显示,但是容器将通过并通过,不会执行管道。 同样,这是完全按照文档中所述编写的

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

知道我做错了什么吗?

我会尝试使用以下命令: /bin/sh -ccat作为参数。

好,

看来我犯的唯一错误是以下内容。 在容器内使用一个工作台即可。 在Openshift中,最好使用官方的jenkins从属映像,因为社区映像在我的git checkout中遇到了问题。 我还进行了一些更改,以使用yamlfile配置我的构建容器。 所以我的设置现在看起来像这样(以一个基本阶段为例)

詹金斯/ BuildPod.yaml

kind: Pod
apiVersion: v1
metadata:
  labels:
    app: my-build-pod
spec:
  containers:
  - name: jnlp
    image: openshift/jenkins-slave-base-centos7:latest
  - name: nodejs
    image: node:8-alpine
    command:
    - cat

Jenkinsfile

node {
  checkout scm
  def label = "mypod-${UUID.randomUUID().toString()}"

  podTemplate(
    label: label
    cloud: 'openshift'
    yaml: readFile(file: "jenkins/BuildPod.yaml")
  ){
    node(label){
      container('nodejs'){
        stage('Check versions'){
          sh 'node -v'
          sh 'npm -v'
        }
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM