我们有一些复杂的bash脚本,现在在Jenkins的托管文件部分.我们尝试将作业迁移到管道但我们不知道将bash脚本转换为groovy,因此我们希望将其保留在bash中.
我们在
Git中有一个jenkins-shared-library,用于存储我们的管道模板.在工作中我们添加了正确的环境变量.
我们希望将bash脚本保存在git中而不是托管文件中.在管道中加载此脚本并执行它的正确方法是什么?
我们用libraryResource尝试了一些东西,但是我们没有设法让它工作.我们在哪里将test.sh脚本放在git中,我们如何调用它? (或者在这里运行shell脚本是完全错误的)
def call(body) {
// evaluate the body block, and collect configuration into the object
def pipelineParams= [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = pipelineParams
body()
pipeline {
agent any
options {
buildDiscarder(logRotator(numToKeepStr: '3'))
}
stages {
stage ('ExecuteTestScript') {
steps {
def script = libraryResource 'loadtestscript?'
script {
sh './test.sh'
}
}
}
}
post {
always {
cleanWs()
}
}
}
}
最佳答案 在我的公司中,我们的CI中也有复杂的bash脚本,而libraryResource是一个更好的解决方案.
在脚本之后,您可以执行一些更改以使用存储在libraryResource中的bash脚本:
stages {
stage ('ExecuteTestScript') {
steps {
// Load script from library with package path
def script_bash = libraryResource 'com/example/loadtestscript'
// create a file with script_bash content
writeFile file: './test.sh', text: script_bash
// Run it!
sh 'bash ./test.sh'
}
}
}