当前位置:   article > 正文

jenkins pipeline声明式流水线语法_声明式pipeline里实现函数

声明式pipeline里实现函数


一、概述

声明式语法是Jenkins提供的一种新的选择。

代码编排在清晰的段落中,相对于只关注实现逻辑,这些流水线的主要区域描述了我们所期望的流水线的状态和输出。

优点

  • 更结构化, 贴近传统的Jenkins Web表单形式。
  • 更强大的声明内容能力, 高可读性。
  • 可以通过Blue Ocean图形化界面自动生成。
  • 段落可映射到常见的Jenkins概念, 比如通知。
  • 更友好的语法检查和错误识别。
  • 提升流水线间的一致性。

缺点

  • 对迭代逻辑支持较弱(相比程序而言) 。
  • 仍在开发完善中(对于传统Jenkins中的部分功能缺乏支持) 。
  • 更严格的结构(更难实现自定义流水线代码) 。
  • 目前对于复杂的流水线和工作流难以胜任。

二、结构

一个声明式流水线是由一个包含了一些指令和部分的外套代码块组成的。

代码块

在这里插入图片描述
在这里插入图片描述

部分

声明式流水线中的部分是一种方法,用于收集在整个流水线流程的某些特殊点上需要被执行的项目。
在这里插入图片描述

指令

流水线中的指令可以被认为是一个做任何以下事情的语句或代码块。
在这里插入图片描述

步骤

在这里插入图片描述

条件

在这里插入图片描述

三、构建代码块

声明式流水线的结构
在这里插入图片描述

pipeline

在这里插入图片描述

agent

用来指定整个流水线或者 一个特定的 阶段在哪 里运行。这与脚本式流水线中的 node 令用法相似 。

在靠近pipeline代码块 的顶部 ,必须要有一个 agent指令用来指 定“默认的” 执行节点。

这个 agent 指令所做 的事情,实际上就是指 明使用哪一个 节点去 执行流水线或阶 段。

常用方法:
在这里插入图片描述
在这里插入图片描述

标签和自定义工作空间

在这里插入图片描述

代理节点与 Docker

使用现有Docker镜像

在这里插入图片描述
在这里插入图片描述
示例:
在这里插入图片描述

使用Dockerfile

在这里插入图片描述

重用相同的节点和工作空间

在这里插入图片描述

environment

定义全局环境变量

environment {			
 	username = 'test'
  	password = "123456"
}
  • 1
  • 2
  • 3
  • 4

tools

可以让我们指定哪些工具需要在我们已经选择的代理节点上自动安装在配置路径下。
在这里插入图片描述

options

清理历史构建

在这里插入图片描述

skipDefaultCheckout(),阻止全局源码检出

在这里插入图片描述

options 总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

triggers

这个指令允许你指定使用什么类型的触发器来启动你的流水线构建。当有代码改动时会通过比如 webhook 来通知 Jenkins
触发构建。

在这里插入图片描述
在这里插入图片描述
cron 语法示例:
在这里插入图片描述

parameters参数化构建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
示例:

parameters {			//参数化构建
      choice choices: ['true', 'false'], description: '测试', name: 'test'		//选择参数
      string name: 'NEW_BRANCH', defaultValue: '', description:'', trim: true	//字符串参数
      listGitBranches branchFilter: '.*/feature.*||.*/dev', credentialsId: 'devops',
                defaultValue: '', name: 'BRANCH', quickFilterEnabled: true, remoteURL: 'https://192.168.1.2/devops.git', selectedValue: 'NONE',
                sortMode: 'DESCENDING_SMART', tagFilter: '*', type: 'PT_BRANCH'	//列出git分支
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

libraries共享库

使用共享库,有关共享库的详细内容参考文章:jenkins扩展你的流水线(共享库)
在这里插入图片描述

stages

在 一个声明式流水线中,单个阶段的集合被封装在 stages 部分,这使得我们的声明式流水线更加结构化。

stages是一个必须的部分
在这里插入图片描述

stage

定义阶段名,在流水线构建的时候能够展现出来,让使用者能够直观地知道这个阶段是做什么的

steps

在这里插入图片描述

有条件地执行一个阶段

在任何阶段,你都可以有条件地执行。也就是说,你可以让Jenkins 基于一个或者多个可以评估为true 的条件去决定是否执行该阶段中的步骤。这是一个可选结构,并且不能用在流水线脚本的顶层

示例:
在这里插入图片描述
在这里插入图片描述

条件执行使用与、或、非

在这里插入图片描述

post

post 也是一个既可以在流水线中也可以在阶段中使用的部分。它在两个地方都是可选的。

post 部分可以放在 一个阶段的结尾或者 整个流水线的结尾
在这里插入图片描述
在这里插入图片描述

完整示例

pipeline {
   agent any
   environment {			//设置全局变量
	   username = 'test'
	   password = "123456"
	}
	parameters {			//参数化构建
      choice choices: ['true', 'false'], description: '测试', name: 'test'
      string name: 'NEW_BRANCH', defaultValue: '', description:'', trim: true
    }
   stages {
      stage('阶段一') {
         steps {
            deleteDir()		//清空当前${WORKSPACE}下面的内容
            sh '''
            	echo "执行Shell命令"
            '''
        }
      }
      stage('阶段二') {
         steps {
            sh '''
            	echo "执行Shell命令"
            '''
        }
      }
      stage('并行') {
        parallel {
              stage('Stage1') {
                  steps {
                      echo "Stage1"
                  }
              }                             
              stage('Stage2') {
                  steps {
                      echo "Stage2"
                  }
              }
        }
      }
      
    }
    
   post {		//构建后处理
       always {
           echo "总是执行"
       }
       failure {
           echo "失败后执行"
       }
       success {
           echo "成功后执行"
       }
   }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

流水线语法生成器

如果不知道某些插件的用法,可以通过Jenkins自带的流水线语法生成器来查看
在这里插入图片描述
以参数化构建为例,配置好之后,点击"Generate Dectarative Directive"即可在下方生成代码,直接复制到Groovy脚本即可
在这里插入图片描述

四、处理非声明式的代码

在声明式流水线中使用非声明式的代码是会报错的,可以有以下几种方法来规避

检查你的插件

在这里插入图片描述

创建一个共享库

在pipeline 代码块之外放置代码

script语句(推荐)

在这里插入图片描述
在这里插入图片描述

五、并行执行

window和linux的stage是并行执行的

stage("build, deploy and test on Windows and Linux") {
    parallel {
        stage("windows") {
            stages {
                stage("build") {
                    steps {
                        timestamps {
                            echo "build on windows."
                        }
                    }
                }
                stage("deploy") {
                    steps {
                        timestamps {
                            echo "deploy on windows."
                        }
                    }
                }
            }
        }

        stage("linux") {
            stages {
                stage("build") {
                    steps {
                        timestamps {
                            echo "build on linux."
                        }
                    }
                }
                stage("deploy") {
                     steps {
                         timestamps {
                             echo "deploy on linux."
                         }
                    }
                }
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

六、声明式和脚本式通用方法

注释

单行注释:用双左斜线(//)

多行注释

/** 多行注释:
     * 第一行
     * 第二行
     */
  • 1
  • 2
  • 3
  • 4

执行shell脚本

sh '''
	shell命令
'''
或者
sh """
	shell命令
"""
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

单引号与双引号的区别

单引号:(shell优先)

获取shell变量——${key}
不能获取groovy通过def定义的变量
可以获取参数化定义的值
shell自身定义的变量会覆盖jenkins参数化定义的变量
  • 1
  • 2
  • 3
  • 4

双引号:(def定义的优先)

获取groovy定义的变量——${key}
获取shell变量——\${key}		#需要通过\进行转义
  • 1
  • 2

建议:声明式流水线用三单引号,脚本式流水线用三双引号

到指定目录下执行

如果指定的目录不存在,会创建

dir('docker') {
	xxxxx
}
  • 1
  • 2
  • 3

七、参考

文章:《Jenkins2权威指南》
史上最全 Jenkins Pipeline流水线详解

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/650100
推荐阅读
相关标签
  

闽ICP备14008679号