Jenkins Pipeline 语法分类
-
Jenkins Pipeline 支持两种语法,一种 Declarative Pipeline(声明式),一种 ScriptedPipeline(脚本式)。
-
声明式的 Pipeline 限制用户使用严格的预选定义的结构,是一种声明式的编程模型,对比脚本式的 Pipeline 学习起来更加简单;
-
脚本式的 Pipeline 限制比较少,结构和语法的限制由 Groovy 本身决定,是一种命令式的编程模型。
-
所以使用声明式的方式编写 jenkinsfile。一般来说 jenkinsfile 会被放在代码库的根目录下。
Pipeline 的几个基本概念
1、Stage 阶段: stages : 阶段组
- 一个 Pipeline 有多个 Stage 组成,每个 Stage 包含一组 Step。
- 注意一个 Stage 可以跨多个 Node 执行,即 Stage 实际上是 Step 的逻辑分组。
- 一个Jenkinsfile 可以分为大的阶段,如打包、构建、 部署。测试
- 构建的流程,可以分为这几步,获取源代码,然后打包,构建,进行编译,替换配置文件,编译完打包,进行部署 这个阶段就是stage
2、Node节点:
- 一个 Node 就是一个 Jenkins 节点,可以是 Master,也可以是 Slave,是 Pipeline中具体 Step 的运行环境。
3、Step步骤:
-
Step是基本的运行单元,可以是创建一个目录、从代码库中 checkout 代码、执行一个 shell 命令、构建 Docker 镜像、将服务发布到 Kubernetes 集群中。
- Step 由 Jenkins 和 Jenkins 各种插件提供。 dockerfile
-
step步骤 就是具体的操作,具体的一步一步的东西就是步骤step,是最小的操作单元。每个阶段都有很多步骤
options Jenkins Pipeline配置参数
options Jenkins Pipeline配置参数
参数名 | 说明 | 例子 |
---|---|---|
buildDiscarder | 保留最近历史构建记录的数量 | buildDiscarder(logRotator(numToKeepStr: ‘10’) |
checkoutToSubdirectory | 将代码从版本控制库中拉取后,保存在工作目录的子目录 | checkoutToSubdirectory(‘subdir’) |
disableConcurrentBuilds | 禁用Jenkins同时执行多次该pipeline | disableConcurrentBuilds() |
newContainerPerStage | agent为Docker或Dockerfile时,每个stage都分别运行在一个新容器中 | newContainerPerStage() |
retry | pipeline发生失败后重试次数 | retry(4) |
timeout | pipeline运行超时时间 | timeout(time:10, unit: ‘HOURS’) |
pipeline{
agent any
options{
buildDiscarder(logRotator(numToKeepStr: '10')
disableConcurrentBuilds()
retry(4)
timeout(time:10, unit: 'HOURS')
}
stages{
stage('demo'){
steps{
sh 'echo hello'
}