当前位置: 首页 > 知识库问答 >
问题:

jenkinsfile使用traits和其他groovy synax

宋望
2023-03-14

我想通过jenkinsfiles使用稍微复杂一点的管道构建,以及一些可重用的步骤,因为我有很多或类似的项目。我正在使用jenkins 2.0和管道插件。我知道您可以加载groovy脚本,其中可以包含一些通用代码,但我想知道这些脚本是否可以使用groovy-like特性的一些面向对象的特性。例如,假设我有一个叫做步骤的特征:

package com.foo.something.ci 
trait Step {                                         
    void execute(){ echo 'Null execution'}                                 
}

然后在另一个文件中实现该trait的类:

class Lint implements Step {
    def execute() {
        stage('lint')
        node {
            echo 'Do Stuff'
        }
    }
}

然后是另一个包含“main”函数的类:

class foo {
   def f = new Lint()
   f.execute()
}

我如何在Jenkinsfile中加载和使用所有这些类,尤其是因为我可能有多个类,每个类定义一个步骤?这可能吗?

共有1个答案

颜君浩
2023-03-14

看看共享库。这些支持在Jenkins中使用本机groovy代码。

您的Jenkinsfile将包括您的共享库,并使用您定义的类。请注意,如果要使用Jenkins管道插件中定义的其他变量,则必须传递Jenkins的steps变量。

文档摘录:这是一个类,它将定义您的阶段

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'
}
 类似资料:
  • 特征封装了方法和字段定义,然后可以通过将它们混合到类中来重用它们。 与类继承不同,其中每个类必须仅从一个超类继承,类可以混合任意数量的特征。 Traits用于通过指定支持的方法的签名来定义对象类型。 Scala还允许部分实现特征,但特征可能没有构造函数参数。 特征定义看起来就像一个类定义,除了它使用关键字trait 。 以下是特质的基本示例语法。 语法 (Syntax) trait Equal {

  • 使用 Adobe Bridge 和 After Effects 使用 Adobe Bridge 可运行动画预设;运行跨产品工作流程自动化脚本;查看和管理文件和文件夹;通过将关键字、标签和等级分配给您的文件来组织这些文件;搜索文件和文件夹;以及查看、编辑和添加元数据。 要从 After Effects 打开 Adobe Bridge,请选择“文件”>“在 Bridge 中浏览”。 要在 Adobe

  • 问题内容: 这相当不错,但是我正在尝试学习/理解python中的函数式编程。如下代码: 产生: 问:有没有一种方法可以在python中使用map或任何其他功能工具来产生以下内容而没有循环等。 顺便提一下,如果foo和bar之间存在依赖关系,则实现将如何更改。 例如 并打印: PS:我知道如何使用if,循环和/或生成器天真地做到这一点,但是我想学习如何使用功能性工具来实现这一点。 这仅仅是在mapt

  • 让我们从建立一个计数器组件开始。这个组件将负责跟踪其被点击多少次并显示该数量。 app/components/counter-component.ts View Example 在这种情况下,点击事件绑定到从 ActionCreatorService调用我们的动作创建者的表达式。 让我们来看看@select的使用。 是Ng2-Redux的一个功能,它旨在帮助您以声明方式将 store 的状态附加到

  • 1. 安装protoc命令 下载地址https://github.com/google/protobuf/releases 根据自己系统对应下载 2.安装php protocbuf扩展 通过pecl方式安装 VERSION 目前最新版本为3.5.1.1 sudo pecl install protobuf-3.5.1.1 3.创建test.proto文件 在项目根目录创建Protobuf/Src目