node { (3)
stage('Stage 1') {
echo 'Hello World' (2)
通过经典的 UI 定义流水线可以很方便的测试流水线代码片段,也可以处理简单的或不需要从源代码仓库中检出/克隆的流水线。正如上面提到的,和通过 Blue Ocean(上面)或在版本管理系统中(下面)定义的 ``Jenkinsfile`` 不同,在流水线项目的 脚本 文本区域输入的 ``Jenkinsfile`` 由 Jenkins 自己存储在 Jenkins 主目录下。因此,为了更好地控制和扩展你的流水线,尤其是源代码管理系统中那些复杂的项目,建议使用
Blue Ocean 或
源码管理系统来定义你的 Jenkinsfile
文件。
为简化操作,流水线的 Jenkinsfile
可以在文本编辑器或集成开发环境(IDE)中进行编写并提交到源码管理系统 (可选择性地与需要 Jenkins 构建的应用程序代码放在一起)。然后 Jenkins 从源代码管理系统中检出 Jenkinsfile
文件作为流水线项目构建过程的一部分并接着执行你的流水线。
要使用来自源代码管理系统的 Jenkinsfile
文件配置流水线项目:
由于流水线代码(特别是脚本式流水线)是使用类似 Groovy 的语法编写的, 如果你的IDE不能正确的使用语法高亮显示你的 Jenkinsfile
,可以尝试在 Jenkinsfile
文件的顶部插入行 #!/usr/bin/env groovy
纠正这个问题。
对于只展示步骤的片段生成器的补充,流水线还提供了一个内置的“全局变量参考”。和片段生成器一样,它也是由插件动态添加。但和片段生成器不一样的是,全局变量参考只包含由流水线或插件提供的可用于流水线的变量文档。
流水线默认提供的变量是:
可以从脚本式流水线中访问的环境变量,例如:
env.PATH
或 env.BUILD_ID
。 访问内置的全局变量参考页面 ${YOUR_JENKINS_URL}/pipeline-syntax/globals
以获取完整的,最新的,可用于流水线的环境变量列表。
params
将为流水线定义的所有参数作为
Map,例如:params.MY_PARAM_NAME
。
currentBuild
可用于发现当前正在执行的流水线的信息,
比如 currentBuild.result
,currentBuild.displayName
等属性。参考内置的全局变量参考页面 ${YOUR_JENKINS_URL}/pipeline-syntax/globals
以获取完整的,最新的,currentBuild
的属性列表。
片段生成器可以帮助生成脚本式流水线的步骤或者声明式流水线的 stage
中的 steps
代码块,但是其并没有包含用于定义声明式流水线的
section(节段)和
directive(指令)。声明式指令生成器(Declarative Directive Generator)这个工具可以做到这点。和 片段生成器类似,指令生成器允许你选择声明式的指令,对其以一种方式进行配置,然后生成这个指令的配置,让你将其用于声明式流水线。
要使用声明式指令生成器生成一个声明式的指令:
从已配置好的流水线导航到 Pipeline Syntax/流水线语法 链接(见上),然后点击侧栏的 Declarative Directive Generator,或直接访问 ``${YOUR_JENKINS_URL}/directive-generator``。
在下拉菜单中选择需要的指令。
使用下拉菜单下面动态生成的区域配置已选的指令。
点击 Generate Declarative Directive 生成一个能够被复制到流水线中的指令配置。
指令生成器可以生成嵌套的指令配置,比如在 when
指令内的条件,但是它不能生成流水线步骤。对于包含步骤的指令内容,比如 stage
内的 steps
或 post
内的条件如 always
或 failure
,指令生成器添加一个占位符注释。你仍然需要手动添加步骤到流水线中。
Jenkinsfile (Declarative Pipeline)
stage('Stage 1') {
steps {
// One or more steps need to be included within the steps block.