在groovy共享库的Jenkins中使用Ant库

时间:2019-06-16 18:36:09

标签: jenkins groovy jenkins-pipeline jenkins-groovy

我建立了一个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配置的屏幕截图。

Jekins Ant configuraiton

我觉得我有一个非常简单的用例。所有参数都很好。真正令人头疼的是没有调试反馈。

要添加一些上下文,我正在使用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,则会收到一个异常提示,指出基本上不是真正的参数。因此,它绝对是蚂蚁。

  • 另一件事是,如果我更改了文件名,我也会遇到问题。因此,这使我认为也许只是找不到我的代币来替换。不确定蚂蚁在这里如何工作。也许是文件编码?

0 个答案:

没有答案