侧边栏壁纸
  • 累计撰写 402 篇文章
  • 累计创建 63 个标签
  • 累计收到 122 条评论

目 录CONTENT

文章目录

Jenkins 2.0 流水线Pipeline简单介绍

Z同学
2022-11-30 / 0 评论 / 3 点赞 / 128 阅读 / 1,960 字
温馨提示:
本文最后更新于 2022-11-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1. 前言

本篇介绍流水线的一些界面和窗口,以及基本的脚本式流水线生成。

内容比较少,本篇只是简单的介绍流水线界面中的一些基本配置。

2. 流水线

当我们创建一个流水线任务之后,打开的界面内容如下图所示:

image-20221130171926290

前面的General基本介绍就省略了。

如果有需要可以进行选项卡配置,或干脆使用默认的配置。对于流水线任务来说。

我们关注的就是流水线(Pipeline)面板中的配置。

image-20221130172144325

该面板主要是一个文本编辑器,我们通过这个文本编辑器编写我们的Pipeline脚本。

上图的是一个脚本式流水线脚本。

简单的介绍一下:node() 这个关键字表明了脚本内容为脚本式。

而里面的参数,定义了这个脚本内容的运行节点,例如上面配置的就是master,也就是默认的当前主节点进行运行。

我们如果有其他的运行节点,可以在这个地方填写相应的节点名称。

后面的stage定义的就是各个阶段的任务。

阶段的写法是Groovy的闭包的语法,每个stage必须传递一个Name值进去。

例如我上面的就是传的build值,也就是说在build阶段才会执行里面的方法。

2.1 流水线语法-Pipeline Syntax

我们写流水线脚本时,不可能记住所有阶段的代码。或部分阶段不太清晰的情况下,就可以通过这个功能,进行各种帮助。打开后的界面效果如下所示:

image-20221130172918920

片段生成器:我们可以通过代码生成器选择我们需要的步骤,然后配置完参数后,将会自动生成对应的流水线脚本。 生成后的指令我们可以放在脚本式指令中也可以放在声明式指令中。它是一个小的片段

image-20221130174132838

Declarative Directive Generate:生成声明性指令。通过选择功能。可以生成一个用于声明式脚本的命令。例如下面所示:创建一个小的声明式代码块。image-20221130174310987

Declarative Online Documentation :声明式在线文档,点击后将会打开链接: https://jenkins.io/doc/book/pipeline/syntax/

步骤参考:会列出各种参考语句和groovy 代码。我们如果对部分DSL语句不熟悉,或忘记了,可以通过这个步骤参考进行了解

image-20221130174623265

全局变量参考:如果想知道在Pipleline中可以使用哪些默认的全局变量。那么可以通过这个功能进行查询,它会列出一些参考的全局变量

在线文档:将会打开链接为:Pipeline (jenkins.io)的网页,就是用来介绍Pipeline的各种知识的文档。

Examples Reference:Pipeline管道的各种示例介绍。将会打开链接:Pipeline Examples (jenkins.io)

IntelliJ IDEA GDSL: 就是IDEA中的GDSL语法参考,展示如下的大量的DSL语法内容。

def ctx = context(scope: scriptScope())
contributor(ctx) {
method(name: 'parallel', type: 'Object', params: ['closures':'java.util.Map'], doc: 'Execute in parallel')
method(name: 'parallel', type: 'Object', namedParams: [parameter(name: 'closures', type: 'java.util.Map'), parameter(name: 'failFast', type: 'boolean'), ], doc: 'Execute in parallel')
method(name: 'addBadge', type: 'Object', namedParams: [parameter(name: 'icon', type: 'java.lang.String'), parameter(name: 'text', type: 'java.lang.String'), parameter(name: 'id', type: 'java.lang.String'), parameter(name: 'link', type: 'java.lang.String'), ], doc: 'Add Badge')
method(name: 'addErrorBadge', type: 'Object', params: [text:'java.lang.String'], doc: 'Add Error Badge')
method(name: 'addErrorBadge', type: 'Object', namedParams: [parameter(name: 'text', type: 'java.lang.String'), parameter(name: 'id', type: 'java.lang.String'), parameter(name: 'link', type: 'java.lang.String'), ], doc: 'Add Error Badge')
method(name: 'addHtmlBadge', type: 'Object', params: [html:'java.lang.String'], doc: 'Add a html badge Text')
method(name: 'addHtmlBadge', type: 'Object', namedParams: [parameter(name: 'html', type: 'java.lang.String'), parameter(name: 'id', type: 'java.lang.String'), ], doc: 'Add a html badge Text')
method(name: 'addInfoBadge', type: 'Object', params: [text:'java.lang.String'], doc: 'Add Info Badge')
method(name: 'addInfoBadge', type: 'Object', namedParams: [parameter(name: 'text', type: 'java.lang.String'), parameter(name: 'id', type: 'java.lang.String'), parameter(name: 'link', type: 'java.lang.String'), ], doc: 'Add Info Badge')
method(name: 'addShortText', type: 'Object', params: [text:'java.lang.String'], doc: 'Add Short Text')
method(name: 'addShortText', type: 'Object', namedParams: [parameter(name: 'text', type: 'java.lang.String'), parameter(name: 'background', type: 'java.lang.String'), parameter(name: 'border', type: 'java.lang.Integer'), parameter(name: 'borderColor', type: 'java.lang.String'), parameter(name: 'color', type: 'java.lang.String'), parameter(name: 'link', type: 'java.lang.String'), ], doc: 'Add Short Text')
method(name: 'addWarningBadge', type: 'Object', params: [text:'java.lang.String'], doc: 'Add Warning Badge')
method(name: 'addWarningBadge', type: 'Object', namedParams: [parameter(name: 'text', type: 'java.lang.String'), parameter(name: 'id', type: 'java.lang.String'), parameter(name: 'link', type: 'java.lang.String'), ], doc: 'Add Warning Badge')
 ...

这里面的知识点,都是关于各种管道(Pipeline)的语法支持。让我们可以快速入手而已。

当我们配置完毕后,执行脚本时,创建了多个stage阶段对象,那么就会在执行结束后生成多个相对应的模块。

例如:创建内容如下:(不指定节点时,会自动在可以执行的节点中运行。)

node(){
    stage('zin'){
        echo '这是第一个阶段 '   
    }
    stage('yan'){
        echo 'zinyan 的脚本式'   
    }
    stage('build'){
        echo '这是最后一个阶段 '   
    }
}

执行build 这个流水线后。

image-20221130180413827

界面中就会按照我创建的stage生成对应的模块并进行执行。并输出每隔stage中的执行结果和时长等信息。

3. 状态

每次任务执行完毕后,都会有一个记录。例如:这是我的流水线执行的#6条记录(PS:如果不喜欢这种记录方式,有相关插件可以修改这个每一次记录的名称等信息)

image-20221130180614008

变更历史:通常是展示构造结果的每次特殊的日志历史记录。

Console output :会展示本次记录的各种输出日志,例如:

image-20221130180744954

我的每个脚本的内容都进行了输出。就是通过这个地方进行阅读的。

而它的分级目录 View as plain text ,就是使用文本的方式阅读输出的日志而已。

编辑构建信息:可以修改本次构建内容的一些信息,例如标题和描述等。

删除构建:这个很简单,就是删除掉本次构建记录。

回放:允许我们修改并回放一个构建过的流水线。 就算是已经被加载过的步骤,同样能够被修改。image-20221130181054320

流水线步骤:展示了每个流水线的执行时间等,步骤记录image-20221130181132814

Workspaces:工作空间,如果我们有内容输出或其他文档存储。那么就会存储在这个工作空间中了。

Git Build Data:如果我们的流水线中执行过Git的相关操作,那么就会多一个这个菜单,显示Git的相关操作记录和结果等内容。

3

评论区