【发布时间】:2018-01-09 10:46:56
【问题描述】:
我想在我的 Jenkins-Pipeline-Job 中使用 Groovy 来构建我的 Jenkins Slave 和已安装节点的状态列表。因此,我有一些应该以 xml 显示的列表。在使用 IntelliJ 进行测试时,我编写了以下代码。
import groovy.xml.MarkupBuilder
def listNodeNames = []
listNodeNames << 'SLAVE1_NODE_1'
listNodeNames << 'SLAVE1_NODE_2'
listNodeNames << 'SLAVE2_NODE_1'
listNodeNames << 'SLAVE2_NODE_2'
def listComputerNames = []
listComputerNames << 'SLAVE1'
listComputerNames << 'SLAVE2'
def stringWriter = new StringWriter()
def xmlBuilder = new MarkupBuilder(stringWriter)
xmlBuilder.computers {
for (i = 0; i < listComputerNames.size(); i++){
xmlBuilder.computer {
xmlBuilder.computerName("${listComputerNames[i]}")
xmlBuilder.computerStatus("online")
for (j = 0; j < listNodeNames.size(); j++){
if (listNodeNames[j].contains(listComputerNames[i])){
xmlBuilder.slave {
xmlBuilder.slaveName("${listNodeNames[j]}")
xmlBuilder.slaveStatus('test')
xmlBuilder.slaveReason('test')
}
}
}
}
}
}
def xml = stringWriter.toString()
println xml
只要我在 IntelliJ 中运行代码,一切正常,我得到一个有效的 xml 文件:
<computers>
<computer>
<computerName>SLAVE1</computerName>
<computerStatus>online</computerStatus>
<slave>
<slaveName>SLAVE1_NODE1</slaveName>
<slaveStatus>test</slaveStatus>
<slaveReason>test</slaveReason>
</slave>
<slave>
<slaveName>SLAVE1_NODE2</slaveName>
<slaveStatus>test</slaveStatus>
<slaveReason>test</slaveReason>
</slave>
</computer>
<computer>
<computerName>SLAVE2</computerName>
<computerStatus>online</computerStatus>
<slave>
<slaveName>SLAVE2_NODE1</slaveName>
<slaveStatus>test</slaveStatus>
<slaveReason>test</slaveReason>
</slave>
<slave>
<slaveName>SLAVE2_NODE2</slaveName>
<slaveStatus>test</slaveStatus>
<slaveReason>test</slaveReason>
</slave>
</computer>
</computers>
但如果我在我的 Jenkins 实例上执行相同的脚本,大多数结束标签都会丢失:
<computers>
<computer>
<computerName>SLAVE1</computerName>
<computerStatus>online</computerStatus>
<slave>
<slaveName>SLAVE1_NODE1</slaveName>
<slaveStatus>test</slaveStatus>
<slaveReason>test</slaveReason>
<slave>
<slaveName>SLAVE1_NODE2</slaveName>
<slaveStatus>test</slaveStatus>
<slaveReason>test</slaveReason>
<computer>
<computerName>SLAVE2</computerName>
<computerStatus>online</computerStatus>
<slave>
<slaveName>SLAVE2_NODE1</slaveName>
<slaveStatus>test</slaveStatus>
<slaveReason>test</slaveReason>
<slave>
<slaveName>SLAVE2_NODE2</slaveName>
<slaveStatus>test</slaveStatus>
<slaveReason>test</slaveReason>
在通过 jenkins 创建 xml 文件时我做错了什么还是有具体的步骤要做?
【问题讨论】:
标签: xml jenkins groovy jenkins-pipeline