前一篇文章讲述了Jenkins任务配置修改的基本场景,可以覆盖大部分的修改,因为没有涉及到删配置的,所以这里还需要补充一部分。
配置项有名无值
此类也有两种情况
值缺失
可以观察到在我们的配置文件中,描述配置在没有值的时候是呈现出 的形式,而不是成对出现的。
当使用上一篇文章中的修改配置值场景的赋值操作时,会提示属性错误。
说明description_node的第一子节点是None
像这种的,直接给他赋值也是不行的。
description_node.data = 123
能够提交这次修改,但是修改本身并不会引起配置变化。
当我们想将文本转换为节点传入的时候,会得到转换器的语法错误提示。
description_node = collection.getElementsByTagName("description")[0]
des_str = '123'
dt_des = parseString(des_str)
collection_des = dt_des.documentElement
description_node.appendChild(collection_des)
表明了转换只能接受类似于xml的格式的字符串。
读者可以在这里思考如何实现文本传入此类节点。
我采用的是构造整体节点后提取对应的子节点,将这个子节点附加到description节点中的方式
description_node = collection.getElementsByTagName("description")[0]
des_str = '<sample>123</sample>'
dt_des = parseString(des_str)
collection_des = dt_des.documentElement
description_node.appendChild(collection_des.firstChild)
执行成功后可以看到描述已经在任务界面了
这里要注意的是节点构建的字符串是不能有空格开头的,要基本符合xml的规范。
整体节点的缺失
在构建环境配置栏目里,如果什么都没勾选,在配置文件中展示的是 <buildWrappers/>
我们勾选上构建开始前清理工作空间,可以看到配置项目发生了如下的变化。我们只需要参考前一篇文章中的参数配置,将这个项目的字符串转换成节点后附加到buildWrappers节点内即可。
删除某项配置
看多了添加配置项目,肯定会有这个疑问,没有删除的操作吗?其实删除配置项目也是工程维护中用的到的,比如放开某些限制,去掉点文件传递操作等等。这里演示删除刚才的清理环境步骤
build_wrappers = collection.getElementsByTagName("buildWrappers")[0]
clean_up_node = collection.getElementsByTagName("hudson.plugins.ws__cleanup.PreBuildCleanup")[0]
build_wrappers.removeChild(clean_up_node)
具体方式取得上级节点和这个要删除的配置节点,上级节点执行移除方法来去掉这个配置项。
此处有个后遗症就是原有配置项目是不会恢复成单标识符的,还是原来的成对标识符,Jenkins对这个配置文件的理解是不会受影响的。
小结
配置项目本身是以tag来区分的。在Jenkins中基本上没有顺序的问题。哪怕是参数列表,也不会去考虑你的位置。所以在添加配置时,基本只需要调用appendChild方法就可以了,对应的删除配置就是removeChild,方法名称如果在用的时候记不起来了,可以查询xml.dom.minidom.py文件。 如果不熟悉配置的修改方法,一定要参阅前一篇文章中的基本思路,通过对比差异后套用场景来实现配置修改。 建议一定要安装config history插件,便于修改错误后回退配置。