vlambda博客
学习文章列表

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

前置阅读:




目录:

(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:

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


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

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


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

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

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

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


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

kubectl label nodes future jenkins-jnlp=yes

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


再次执行构建,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