依赖于 Jenkins 作业 dsl 脚本中的其他文件

Depend on other files from Jenkins job dsl script

我的工作 dsl 文件中有一些大型 bash 脚本,我声明为

String script = '''
  # large script
'''

并从 shell 方法中调用它

shell(script)

不过,我想将脚本分解为 shell 个文件。我试着声明

String script = new File('script.sh').text

但是执行 jenkins 作业 dsl 脚本的作业似乎没有找到该文件,事实上我什至不确定它是从哪个位置执行的。

使用 readFileFromWorkspace 从作业工作区读取文件的内容。

路径是相对于工作区根指定的。

上面链接的 API 文档中的第二个示例是针对批处理文件的,但是将批处理替换为 shell 并且您有针对您的情况的解决方案。

def runScript = readFileFromWorkspace('script.sh')
job('example-2') {
    steps {
        shell(runScript)
    }
}