我目前正在使用以下配置在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")
}
}
知道我做错了什么吗?
我会尝试使用命令:/bin/sh -c
和cat
作为参数。
好,
这似乎是我犯的唯一错误如下。使用容器内的一个阶段,它的工作原理。在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'
}
}
}
}
}