Jenkins…在Jenkins中使用Groovy修改XML文件中的XML标记值
我正在使用jenkins进行自动部署 我需要使用groovy脚本修改xml文件中的xml标记值。我正在使用下面的groovy代码。当我尝试编辑xml标记值时,收到错误未分类字段xml.uti.node错误Jenkins…在Jenkins中使用Groovy修改XML文件中的XML标记值,jenkins,groovy,Jenkins,Groovy,我正在使用jenkins进行自动部署 我需要使用groovy脚本修改xml文件中的xml标记值。我正在使用下面的groovy代码。当我尝试编辑xml标记值时,收到错误未分类字段xml.uti.node错误 Node xml = xmlParser.parse(new File("c:/abc/test.xml")) xml.DeployerServer.host[0] = '172.20.204.49:7100' FileWriter fileWriter = new FileWriter("c
Node xml = xmlParser.parse(new File("c:/abc/test.xml"))
xml.DeployerServer.host[0] = '172.20.204.49:7100'
FileWriter fileWriter = new FileWriter("c:/abc/test.xml")
XmlNodePrinter nodePrinter = new XmlNodePrinter(new PrintWriter(fileWriter))
nodePrinter.setPreserveWhitespace(true)
nodePrinter.print(xml)
我需要修改主机标记值,主机在DeployerServer标记中可用
任何帮助都将不胜感激。以下是脚本,在线评论:
//Create file object
def file = new File('c:/abc/test.xml')
//Parse it with XmlSlurper
def xml = new XmlSlurper().parse(file)
//Update the node value using replaceBody
xml.DeployerServer.host[0].replaceBody '172.20.204.49:7100'
//Create the update xml string
def updatedXml = groovy.xml.XmlUtil.serialize(xml)
//Write the content back
file.write(updatedXml)
我使用powershell在app.config文件中进行了此更改。 我的问题是密码。因此,我在jenkins中创建了一个凭证来存储密码。 如果不需要使用凭据,只需删除withCredentials部分 这是我的詹金斯档案的一部分:
def appConfigPath = "\\server\folder\app.config"
stage('Change App.Config'){
steps{
withCredentials([string(credentialsId: 'CREDENTIAL_NAME', variable: 'PWD')]) {
powershell(returnStdout: true, script: '''
Function swapAppSetting {
param([string]$key,[string]$value )
$obj = $doc.configuration.appSettings.add | where {$_.Key -eq $key }
$obj.value = $value
}
$webConfig = "'''+appConfigPath+'''"
$doc = [Xml](Get-Content $webConfig)
swapAppSetting 'TAG_TO_MODIFY' 'VALUE_TO_CHANGE'
$doc.Save($webConfig)
''')
}
}
}
别忘了更新你的powershell。(最低版本3)我想在管道脚本中读取/操作CSProj文件和NUSPEC文件。如果没有可怕的“SAXParseException:prolog中不允许内容”,我就无法通过parseText() 关于此错误消息,有很多线程。不清楚的是CSProj和NUSPEC文件都是带有BOM的UTF-8,但这是不可见的 更糟糕的是,我一直在尝试自动创建NUSPEC文件,但我无法告诉工具更改文件编码。 上面的答案帮助解决了我的问题,有一次我添加了代码以查找65279作为第一个字符(并删除了它)。然后我可以解析XML并执行上述操作
似乎没有什么好的线索可以把这个摘要放在上面,所以把它添加到一个关于Jenkins,Groovy&XML文件的线索中,这就是我发现这个“已知Java”问题的地方 需要提及的重要细节:1。xml将是您的根节点,您不能再次指定ist。2.阵列访问[0]必须存在3。您必须在grooy沙箱中允许“replaceBody”方法