jenkins-3:使用jenkinsfile在kubernetes中创建jnlp完成一个简单构建

2022-04-28 16:24:42 浏览数 (1)

目录:

(1).准备jenkinsfile

(2).创建测试任务完成构建

(3).参考资料

(1).准备jenkinsfile

先要开一个git工程存放jenkinsfile,我在码云上建了个工程:

https://gitee.com/future-cicd/jenkinsfile

jenkinsfile在这个工程下的目录是:

kubernetesfile/fist-simple-jenkinsfile.file

语法解释:

#这个label是定义podTemplate的label,node要和这个匹配,才能正确对应。

def label = "jenkinsfile-pod-template"

#cloud:是之前文章中在jenkins中配置的k8s-cloud的名称。

#nodeSelector:是声明这个jnlp-pod必须在有这个label的node上分布。

podTemplate(label: label, cloud: 'kubernetes',nodeSelector: 'jenkins-jnlp=yes',

containers: [

containerTemplate(

name: 'jnlp',

image: 'jenkins/inbound-agent:4.11-1-jdk11',

ttyEnabled: true,

alwaysPullImage: false,

#覆盖默认jnlp必须写这个args

args: '{computer.jnlpmac} {computer.name}'),

containerTemplate(

name: 'just-test',

image: 'jenkins/inbound-agent:4.11.2-4',

ttyEnabled: true,

alwaysPullImage: false,

command: 'cat')

]

)

{

node (label) {

stage('test-jnlp'){

container('jnlp'){

echo 'hello, I am jnlp container.'

}

}

stage('test-just-test'){

container('just-test'){

echo 'hello, I am just-test container.'

}

}

}

}

(2).创建测试任务完成构建

新建jenkins流水线任务test1:

因为这个是公有仓库,所以不需要添加凭据。

脚本路径是jenkinsfile在git中的路径。

然后执行构建:发现报错。

因为没有给node打标签,podTemplate中的nodeSelector找不到可以执行的节点。

kubectl label nodes future jenkins-jnlp=yes

再次执行构建,OK。

(3).参考资料

1.Cannot start jenkins agent pod from podTemplate in a separate yaml file

https://issues.jenkins.io/browse/JENKINS-66058

2.Kubernetes plugin for Jenkins

https://plugins.jenkins.io/kubernetes/#documentations

0 人点赞