我想在我的Jenkins管道中实现可重用的函数/方法......
listAllUnitTests([
$class: 'MyUtilities',
arg1: 'foo',
arg2: 'bar'
])
目前尚不清楚如何实际做到这一点;这是一个插件,扩展,是什么?
所以我从熟悉的东西开始,比如Git checkout
......
node {
checkout([
$class: 'GitSCM',
branches: scm.branches,
extensions: scm.extensions,
userRemoteConfigs: scm.userRemoteConfigs
])
}
查看Jenkins插件GitSCM的来源,checkout
方法看起来相当标准;没有特殊的注释或其他任何东西,虽然我不确定管道参数如何与方法签名对齐,因为它显然是不匹配的。我怀疑我走错了路。
@Override
public void checkout(
Run<?, ?> build,
Launcher launcher,
FilePath workspace,
TaskListener listener,
File changelogFile,
SCMRevisionState baseline)
throws IOException, InterruptedException {
我会保持简单:如何实现参数化功能以从Jenkins管道调用来实现这样的目标?
node {
stage('test'){
myUtilMethod([
$class: 'MyUtilities',
arg1: 'foo',
arg2: 'bar'
])
}
}
答案 0 :(得分:1)
您可以使用https://github.com/jenkinsci/workflow-cps-global-lib-plugin/
实施一个或多个库我建议明确指定您需要库(使用上面页面中提到的@Library
注释),而不是隐式可用。这样,您可以在开发和测试库时在测试作业上使用它的特定分支。
查看fabric8,了解一组非常全面的示例:https://github.com/fabric8io/fabric8-pipeline-library