专栏前面的文章里,我们探讨过如何通过代码来修改Jenkins节点的配置和删除节点,在Jenkinsapi的python库功能下,目前还没有断开后重新连接节点的功能。这一篇向大家介绍如何实现这个功能。
(前情提要:jenkins 节点的创建与管理的自动化 - 掘金 (juejin.cn))
为什么要这个功能
对于Jenkins来说,节点的环境变量是只有在断开重新连接的时候才会更新的,临时下线再上线并不影响这个变量,所以节点断开重连是实现管理自动化的很重要的功能。
Jenkinspai库中节点重连的实现逻辑
以目前的功能来看,对于节点的操作,Jenkins库可以实现增加、删除、修改配置、临时下线再上线并不影响这个变量,、上线、轮询、查询状态、查询配置等功能,暂时还没有节点断开的功能。
从上面的几项功能里,我们分析,可以把节点断开后重连的功能分解为下面几个步骤:
1. 读取节点的配置
2. 判断节点是否空闲,不空闲就等待。
3. 空闲节点执行删除操作
4. 重新建一个节点
5. 节点加载原有的节点配置
6. 轮询节点使其上线
代码及其释义
导入需要的库文件并建立Jenkins实例:
# coding:utf-8
import time
from jenkinsapi.jenkins import Jenkins
jks = Jenkins('http://127.0.0.1:8080/', username='bob', password='110c70ea8f41063e377aca53007a1ca2e',
use_crumb=True)
取得原有节点的配置
node_name = 'test_node'
test_node = jks.get_node(node_name)
test_node_config = test_node.get_config()
检测节点的空闲状态,空闲后删除节点
while not test_node.is_idle():
print('node')
time.sleep(10)
jks.delete_node(node_name)
重新建立节点并加载原来的配置,create_node方法上次没用过,其实只需要提供一个节点的名称,他就能创建出来一个节点了
jks.create_node(node_name)
test_node = jks.get_node(node_name)
test_node.upload_config(test_node_config)
test_node.poll()
注意事项
节点的创建功能其实也可以应用于更新,取决于create_node源码里推送配置文件动作在Jenkins处的处理逻辑,有这个名称的节点就是更新配置,没有就是新增一个节点