如何在Jenkins管道中加载bash脚本?

我们有一些复杂的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'
        }
    }
}
点赞