【Jenkins】pipeline基本使用

目录

一、pipeline

二、创建pipeline项目

1、安装pipeline插件

2、创建pipeline项目

三、pipeline语法

1、pipeline组成

2、agent:指定流水线的执行位置,流水线中每个阶段都必须在某个地方执行

3、stage:阶段,代表流水线的阶段,每个阶段都必须要有名称,且各个名称不能重名

4、stages:stage的集合,stages部分至少包含一个stage

5、steps:代表stage阶段中的一个或者多个步骤,steps部分至少包含一个步骤

2、pipeline其他指令

1、post:包含的是在整个pipeline或stage完成后的附加步骤

2、environment:用于设置环境变量,可定义在stage或pipeline部分,环境变量可以设置为全局的,也可以设置为阶段级别(stage)的

3、tools:可定义在pipeline或stage部分,配置我们指定的工具,并将其加入到PATH变量中(工具名称必须在Jenkins的全局工具配置中存在)

4、options:用于配置Jenkins pipeline本身的选项,options指令可以定义在stage或pipeline部分

5、parameters:在构建前定义参数化构建,支持booleanParam, choice, credentials, fifile, text,password, string等参数类型

6、triggers:定义执行pipeline的触发器


一、pipeline

用户可以在一个 Jenkinsfile 中快速实现一个项目的从构建、测试以及到发布的完整流程,灵活方便地实现持续交付,并且可以保存和管理这个Jenkinsfile的定义。

从Jenkins V2.0版本开始,Pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变。

【自由风格任务】对比【流水线】

Freestyle Jobs Pipeline
通过UI页面配置 通过代码配置(groovy开发的,基于java的脚本语言)
配置变化不能追溯 可以通过SCM(代码版本管理)追溯
迁移需要重新创建任务 方便任务配置迁移
每个任务对应每个阶段(构建、测试、发布) 单个任务中完成所有阶段的编排

 

二、创建pipeline项目

1、安装pipeline插件
2、创建pipeline项目

三、pipeline语法

Jenkins Pipeline通常会写入到一个文本文件中(称为Jenkinsfile),该文件可以通过SCM(代码版本管理)系统管理(比如从Git上拉取脚本)

  • 脚本式(Scripted Pipeline)—— 比如一些if判断等逻辑,脚本式里面不能包含声明式

  • 声明式(Declarative Pipeline)—— 一般用这个比较多,官方也比较推荐,声明式里面可以包含脚本式,更简单更加结构化的语法,官网推荐使用

1、pipeline组成

基本结构:以下每一部分都是必须的,少一个Jenkins都会报错

pipeline {
    agent any  //表示在哪个节点运行:任意

    stages {
        stage('Hello') {   //名字各不相同
            steps {
                echo 'Hello World'  //具体要做的事情
            }
        }
        
        stage('Hello1') {
            steps {
                echo 'Hello World1'
            }
        }
    }
}

1、pipeline:代表整条流水线,包含整条流水线的逻辑

2、agent:指定流水线的执行位置,流水线中每个阶段都必须在某个地方执行
  • none : 当在pipeline块的顶层使用none时,将不会为整个Pipeline运行分配全局agent ,每个stage部分将需要包含其自己的agent部分

  • any : 在任何可用的agent 上执行Pipeline或stage

  • label : 指定具体的 Jenkins Slave Node,也可以单独指定Stage的执行环境

3、stage:阶段,代表流水线的阶段,每个阶段都必须要有名称,且各个名称不能重名
4、stages:stage的集合,stages部分至少包含一个stage
5、steps:代表stage阶段中的一个或者多个步骤,steps部分至少包含一个步骤

2、pipeline其他指令

1、post:包含的是在整个pipeline或stage完成后的附加步骤
  • always:无论pipeiline运行的完成状态如何都会执行这段代码

  • changes:只有当前pipeline运行的完成状态与先前完成的pipeline的状态不同时,才会执行

  • failure:当前完成状态为失败时执行

  • success:当前完成状态为成功时执行

  • unstable:当前完成状态为不稳定时执行(测试失败/代码违规问题)

  • aborted:当流水线被手动终止时

post{
  always { 
    echo 'will always execute' 
        } 
}
2、environment:用于设置环境变量,可定义在stage或pipeline部分,环境变量可以设置为全局的,也可以设置为阶段级别(stage)的
environment { aaa = 'bbb' }//定义环境变量 

${env.JOB_NAME} //访问Jenkins内置变量 

${env.aaa} //访问自定义变量
3、tools:可定义在pipeline或stage部分,配置我们指定的工具,并将其加入到PATH变量中(工具名称必须在Jenkins的全局工具配置中存在)
tools { maven 'maven3.6.1'}
4、options:用于配置Jenkins pipeline本身的选项,options指令可以定义在stage或pipeline部分
options{ 
	buildDiscarder(logRotator(numToKeepStr:'3')) //保存最近历史构建记录的数量 
	timeout(time:1,unit:'HOURS')//job执行的超时时间 
	disableConcurrentBuilds()//禁止job同时执行 
	retry(3)//失败重试次数 
	}
5、parameters:在构建前定义参数化构建,支持booleanParam, choice, credentials, fifile, text,password, string等参数类型
parameters{ 
  choice(name:'environ',choices:'test\ndev\nstg', description:'请选择测试环境 dev? test? stg?')
  string(name:'version',defaultValue:'0.0.0',description:'当前构建版本号') 
}
  
${params.environ}//通过 params访问对应参数
6、triggers:定义执行pipeline的触发器
triggers { 
    cron('0 19 * * 1-5') 
    pollSCM('0 */2 * * 1-5') 
}

相关推荐

  1. 【Android】WebView 基本使用

    2024-02-03 07:58:01       45 阅读
  2. postgresql的基本使用

    2024-02-03 07:58:01       53 阅读
  3. SQLite基本使用

    2024-02-03 07:58:01       58 阅读
  4. Gazebo基本使用

    2024-02-03 07:58:01       62 阅读
  5. Redisson的基本使用

    2024-02-03 07:58:01       55 阅读
  6. lua基本语法使用

    2024-02-03 07:58:01       58 阅读
  7. SpringDataRedis 基本使用

    2024-02-03 07:58:01       40 阅读
  8. 【Docker 的基本使用

    2024-02-03 07:58:01       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-03 07:58:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-03 07:58:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-03 07:58:01       87 阅读
  4. Python语言-面向对象

    2024-02-03 07:58:01       96 阅读

热门阅读

  1. 五大架构风格之三:独立构件风格

    2024-02-03 07:58:01       48 阅读
  2. 什么是ISO21434网络安全中的信息安全?-亚远景

    2024-02-03 07:58:01       58 阅读
  3. 【华为OD机试】 最小矩阵宽度【2024 C卷|100分】

    2024-02-03 07:58:01       47 阅读
  4. SouthernBiotech重组单克隆二抗

    2024-02-03 07:58:01       89 阅读
  5. WSL2 Ubuntu下检测 不到GPU驱动,无法使用GPU

    2024-02-03 07:58:01       60 阅读
  6. 神经网络和深度学习吴恩达coursera笔记

    2024-02-03 07:58:01       41 阅读
  7. C++之类和对象(1)

    2024-02-03 07:58:01       45 阅读
  8. Spring Boot注解

    2024-02-03 07:58:01       49 阅读
  9. 【PDF.js】发票PDF不显示文本的问题

    2024-02-03 07:58:01       77 阅读
  10. 【Spring Boot 3】【JPA】嵌入式对象

    2024-02-03 07:58:01       45 阅读
  11. Golang使用cobra实现命令行程序

    2024-02-03 07:58:01       56 阅读