首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >詹金斯-库伯内特斯插件inm OpenShift.只有jnlp容器工作。

詹金斯-库伯内特斯插件inm OpenShift.只有jnlp容器工作。
EN

Stack Overflow用户
提问于 2019-03-08 08:27:31
回答 2查看 393关注 0票数 0

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

openshift: v3.6.173.0.140

詹金斯: 2.017 (使用来自https://github.com/openshift/jenkins的红帽子图像)

Jenkins-Kubernetes插件1.12.2

作为Jenkins代理,我使用的是openshift jenkins模板提供的nodejs代理和构建在它们之上的图像(例如,我也适合使用类型记录编译器的一个图像)。

现在,我想要做的是使用多个容器(不仅仅是jnlp一个,而是标准节点、go等容器)运行豆荚,根据文档,这不应该是一个问题(https://github.com/jenkinsci/kubernetes-plugin),因为我应该将容器添加到我的podTemplate中,比如

代码语言:javascript
复制
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作为命令测试将显示在容器日志中,但是容器只会以已完成的方式传递,并且不会执行管道中描述的任何内容。同样,这是完全按照文档中所述的方式编写的。

代码语言:javascript
复制
node(mylabel){
stage('TEST NODE'){
  container("node"){
    sh("echo test node")
  }
  container("jnlp"){
    sh("echo test jnlp")
  }
}

知道我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-12 17:39:50

好的,

似乎我犯的唯一错误是以下几点。在容器内使用一个阶段,它就能工作了。在Openshift中,当社区映像在git结帐时遇到问题时,最好使用正式的jenkins奴隶图像。我还做了一些修改,以使用yamlfile来配置我的构建荚。因此,我的设置现在看起来如下(仅以一个基本阶段为例)

jenkins/BuildPod.yaml

代码语言:javascript
复制
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

代码语言:javascript
复制
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'
        }
      }
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2019-03-08 15:20:36

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55059303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档