Jenkins - Kubernetes Plugin inm OpenShift。只有jnlp容器才能工作

问题描述 投票:0回答:2

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

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

作为Jenkins Agents,我正在使用由openshift jenkins模板提供的nodejs代理和在它们上构建的图像(例如,我也适合使用typescript编译器的一个图像)

现在我想要做的是运行带有多个容器的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测试而不是cat,因为命令测试将显示在容器日志中,但容器将只传递完成,并且它不会执行任何描述的内容管道。同样,这完全按照文档中的说明编写

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

知道我做错了什么吗?

jenkins kubernetes jenkins-pipeline openshift
2个回答
0
投票

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


0
投票

好,

这似乎是我犯的唯一错误如下。使用容器内的一个阶段,它的工作原理。在Openshift中,使用官方jenkins slave图像也更好,因为社区图像遇到了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'
        }
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.