前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CI/CD:基于K8s弹性资源池的配置【第一步】自动化创建Jenkins的Agent节点

CI/CD:基于K8s弹性资源池的配置【第一步】自动化创建Jenkins的Agent节点

作者头像
DevOps云学堂
发布2022-10-04 14:48:03
5880
发布2022-10-04 14:48:03
举报
文章被收录于专栏:DevOps持续集成

如何动态的创建Jenkins的Agent节点?需求是想要实现弹性构建,当Jenkins作业启动时按需创建一个构建节点来执行作业。于是研究了下Jenkins的API,分享一下。(点击下面视频可以简单预览效果)

待解决问题:以下的代码可以在Pipeline或者ScriptConsole中运行,但是如果Pipeline中存在构建Stage会和agent语句冲突,造成序列化问题。建议在ScriptConsole中运行。

本次实践未使用Jenkins的Kubernetes插件, 而是通过Groovy代码来原生实践一番。调试起来也不是很顺利,不过最后算是实现了。

导包

代码语言:javascript
复制
import hudson.model.Node.Mode
import hudson.slaves.*
import jenkins.model.Jenkins

添加节点

代码语言:javascript
复制
String agentName = "zeyang"
String executorNum = "1"
String agentLabel = "JenkinsPod"

agent_node = new DumbSlave(agentName, "Jenkins pod", "/opt/jenkins", executorNum,              
                               Mode.EXCLUSIVE,   
                               agentLabel,                       
                               new JNLPLauncher(),         
                               RetentionStrategy.INSTANCE) 
Jenkins.instance.addNode(agent_node)

  • agentName: 节点名称
  • executorNum: 执行器数量(注意是字符串类型)
  • agentLabel: 节点的标签
  • description: 描述信息
  • JNLPLauncher(): JNLP类型
  • Mode.EXCLUSIVE: 仅允许调度允许作业
  • RetentionStrategy.INSTANCE:可用状态总是在线

获取节点信息

通过jnlp节点会有些信息需要获取,这些信息也可以通过编写脚本拿到,就不用再进入页面中获取了。

代码语言:javascript
复制
node = Jenkins.instance.getNode(agentName)
computer = node.computer
jenkinsUrl = Jenkins.instance.rootUrl.trim().replaceAll('/$', '') 

return  """{
\"jenkinsUrl\" : \"${jenkinsUrl}\", 
\"jenkinsHome\": \"${node.remoteFS.trim()}\",
\"computerUrl\": \"${computer.url.trim().replaceAll('/$', '') as String}\",
\"computerSecret\": \"${computer.jnlpMac.trim()}\"
}"""

以上代码通过agentName 来获取节点的配置信息并生成一个JSON字符串便于后续处理。

ok,到此为止已经实现了弹性构建的第一步了, 后面可以根据获取到的agent信息,替换pod模板,然后在K8s集群中创建。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps云学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导包
  • 添加节点
  • 获取节点信息
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档