jenkins基于k8s动态增减jnlp-slave节点进行构建
1.配置jenkins-master1.打开jenkins系统管理–>系统设置–>新增一个云–>Kubernetes2.新建一个 pipeine 任务/* cloud字段指定系统设置里配置的
1.配置jenkins-master
1.打开jenkins系统管理–>全局安全配置–>代理
这里指定的端口是jnlp-slave链接master使用的端口
注意:
如果jenkins-master是在容器中启动的一定要记得将这个端口暴露到外部,不然jenkins-master会不知道slave是否已经启动,会反复去创建pod只到超过重试次数。
2.打开jenkins系统管理–>系统设置–>新增一个云–>Kubernetes
3.也可以自定义镜像,这里使用的是maven构建镜像
4.挂载目录[‘/var/run/docker.sock’,’/usr/bin/docker’,’/root/.m2’]
5.新建一个 pipeine 任务,下面是流水线脚本
/*
1. cloud字段指定系统设置里配置的Kubernetes云的名字,本例用的是:k8s_115
2. label和node中的字段是pod模板中的label值,本例用的是:jenkins-jnlp-slave
*/
def label = "maven-tmp"
podTemplate(label: label, cloud: 'k8s_115') {
node(label){
stage('checkout git') {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[credentialsId: '69c0dbf0-f786-4aa0-975a-76528f10de8b', url: 'http://127.0.0.1/xxx/devops_test.git']]])
}
container('maven') {
stage('maven build') {
sh 'cd WebTest && mvn clean package'
}
stage('docker build') {
sh 'cd WebTest && mvn docker:build'
}
}
}
}
4.开始构建
遇到的错误
如果提示Jenkins doesn’t have label jenkins-jnlp-slave
1.因为slave节点无法链接到jenkins节点开放端口50000导致
2.因为slave镜像中slave启动失败导致的
3.因为jenkins-master和k8s通信有延时导致超时jenkins会反复创建pod
4.因为slave pod启动失败
5.因为pipeline中指定的label与配置中的不一致导致
参考文档:https://github.com/jenkinsci/kubernetes-plugin/blob/master/README.md
更多推荐
所有评论(0)