我目前正在使用以下配置在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中,比如
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作为命令测试将显示在容器日志中,但是容器只会以已完成的方式传递,并且不会执行管道中描述的任何内容。同样,这是完全按照文档中所述的方式编写的。
node(mylabel){
stage('TEST NODE'){
container("node"){
sh("echo test node")
}
container("jnlp"){
sh("echo test jnlp")
}
}知道我做错了什么吗?
发布于 2019-03-12 17:39:50
好的,
似乎我犯的唯一错误是以下几点。在容器内使用一个阶段,它就能工作了。在Openshift中,当社区映像在git结帐时遇到问题时,最好使用正式的jenkins奴隶图像。我还做了一些修改,以使用yamlfile来配置我的构建荚。因此,我的设置现在看起来如下(仅以一个基本阶段为例)
jenkins/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:
- catJenkinsfile
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'
}
}
}
}
}发布于 2019-03-08 15:20:36
我会尝试使用命令:/bin/sh -c和cat作为参数。
https://stackoverflow.com/questions/55059303
复制相似问题