[英]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 -c
和cat
作为参数。
好,
看来我犯的唯一错误是以下内容。 在容器内使用一个工作台即可。 在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.