我想在Groovy类中访问流水线步骤,例如“ bat”或“ echo”,但我实际上并不知道'script'变量用法的工作方式。这是只有此类的很小的存储库,我在groovy test(spock测试)中称呼此类。有人可以启发我正确使用'script'变量以及调用的外观如何吗?
SoftwareInstallation.groovy
class SoftwareInstallation implements Serializable {
Script script
def runInstallationJar(repoDir){
def exitValues=[]
def configFiles=['software1.xml', 'software2.xml']
configFiles.each {
def status = script.bat returnStatus: true, script: " java -jar ${repoDir}\\resources\\software.jar --inputxml=${repoDir}\\resources\\${it}"
script.echo "Return status : ${status}"
if (status){
log 'success'
}else{
log 'failure'
}
exitValues.add(status)
}
return exitValues
}
}
ps-我确实有一个Jenkinsfile,但是只包含一个gradle调用来运行测试。
答案 0 :(得分:1)
文章中有一个有关Extending with Shared Libraries的示例。
您将在其中找到以下代码:
package org.foo
class Utilities implements Serializable {
def steps
Utilities(steps) {this.steps = steps}
def mvn(args) {
steps.sh "${steps.tool 'Maven'}/bin/mvn -o ${args}"
}
}
@Library('utils') import org.foo.Utilities
def utils = new Utilities(this)
node {
utils.mvn 'clean package'
}
您是在库中还是在脚本中定义类都没有关系。方法将是相同的:
class Utilities implements Serializable {
def steps
Utilities(steps) {this.steps = steps}
def mvn(args) {
steps.sh "${steps.tool 'Maven'}/bin/mvn -o ${args}"
}
}
def utils = new Utilities(this)
node {
utils.mvn 'clean package'
}