我建立了一个jenkins共享库来利用构建。我会利用ant,因为它有许多很棒的实用程序方法可以轻松地修改文件。但是,我似乎无法使其在我的詹金斯环境中正常工作。
我在库中有一个非常简单的ant方法:
@NonCPS
static void antReplace(String file, String token, String value){
def ant = new AntBuilder()
ant.replace(file: "${file}", token: "${token}", value: "${value}")
}
这真的很奇怪。我没有收到任何错误,但是当我调用此方法时文件没有被修改。
在詹金斯中是否有使用蚂蚁的特殊配置?甚至打开错误输出?我只需要一些东西来进一步调试它。我真的很想在我的系统中使用该库。
下面是Jenkins中的ant配置的屏幕截图。
我觉得我有一个非常简单的用例。所有参数都很好。真正令人头疼的是没有调试反馈。
要添加一些上下文,我正在使用Jenkinsfile,使用声明式管道同步进行多分支管道构建作业。 jenkinsfile触发了库中的全局var函数,该文件从库的src util类调用此方法。
全局变量:
import groovy.transform.Field
import org.utilities.Utils
@Field
Utils utils = new Utils()
def call() {
utils.antReplace("${env.WORKSPACE}\\myfile.sql", "xxxDBNAMExxx", "mydbname")
utils.antReplace("${env.WORKSPACE}\\myfile.sql", "xxxSCHEMAxxx", "myschemaname")
}
Jenkinsfile:
@Library('jenkins_lib')_
pipeline {
agent any
stages {
stage("test1"){
steps{
myGlobalVar()
}
}
}
}
实用程序:
package org.utilities
@NonCPS
static void antReplace(String file, String token, String value){
def ant = new AntBuilder()
ant.replace(file: "${file}", token: "${token}", value: "${value}")
}
我还可以验证的一件事是,如果我将file
参数更改为ant.replace
函数更改为filed
,则会收到一个异常提示,指出基本上不是真正的参数。因此,它绝对是蚂蚁。
另一件事是,如果我更改了文件名,我也会遇到问题。因此,这使我认为也许只是找不到我的代币来替换。不确定蚂蚁在这里如何工作。也许是文件编码?