jenkinsfile使用traits和其他groovy synax
发布时间:2020-12-14 16:21:45 所属栏目:大数据 来源:网络整理
导读:我想通过jenkinsfiles使用稍微复杂的管道构建,有一些可重用的步骤,因为我有很多或类似的项目.我正在使用jenkins 2.0和管道插件.我知道你可以加载groovy脚本,其中包含一些通用的代码片段,但我想知道这些脚本是否可以使用一些像traits一样的面向对象的特性.比
我想通过jenkinsfiles使用稍微复杂的管道构建,有一些可重用的步骤,因为我有很多或类似的项目.我正在使用jenkins 2.0和管道插件.我知道你可以加载groovy脚本,其中包含一些通用的代码片段,但我想知道这些脚本是否可以使用一些像traits一样的面向对象的特性.比如说我有一个名为Step的特征:
package com.foo.something.ci trait Step { void execute(){ echo 'Null execution'} } 然后是一个在另一个文件中实现该特征的类: class Lint implements Step { def execute() { stage('lint') node { echo 'Do Stuff' } } } 然后另一个包含’main’函数的类: class foo { def f = new Lint() f.execute() } 我如何在Jenkins文件中加载和使用所有这些类,特别是因为我可能有多个类定义一个步骤?这甚至可能吗? 解决方法
看一下
Shared Libaries.这些可以在Jenkins中使用原生的groovy代码.
您的Jenkinsfile将包含您的共享库,并使用您定义的类.请注意,如果要使用舞台或Jenkins管道插件中定义的其他变量,则必须传递Jenkins的steps变量. Excerpt来自文件: 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(steps) node { utils.mvn 'clean package' } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |