【Jenkins】pipeline基本使用

本文详细介绍了JenkinsPipeline的核心概念,包括pipeline的组成(agent、stage、steps)、其他指令如post、environment、tools、options、parameters和triggers。重点讲解了如何创建和配置pipeline项目,以及不同类型的pipeline语法差异。
摘要由CSDN通过智能技术生成

目录

一、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') 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨撕酒家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值