【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部分](#4、options:用于配置Jenkins pipeline本身的选项,options指令可以定义在stage或pipeline部分)

[5、parameters:在构建前定义参数化构建,支持booleanParam, choice, credentials, fifile, text,password, string等参数类型](#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都会报错

bash 复制代码
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:当流水线被手动终止时

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

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

${env.aaa} //访问自定义变量
3、tools:可定义在pipeline或stage部分,配置我们指定的工具,并将其加入到PATH变量中(工具名称必须在Jenkins的全局工具配置中存在)
bash 复制代码
tools { maven 'maven3.6.1'}
4、options:用于配置Jenkins pipeline本身的选项,options指令可以定义在stage或pipeline部分
bash 复制代码
options{ 
	buildDiscarder(logRotator(numToKeepStr:'3')) //保存最近历史构建记录的数量 
	timeout(time:1,unit:'HOURS')//job执行的超时时间 
	disableConcurrentBuilds()//禁止job同时执行 
	retry(3)//失败重试次数 
	}
5、parameters:在构建前定义参数化构建,支持booleanParam, choice, credentials, fifile, text,password, string等参数类型
bash 复制代码
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的触发器
bash 复制代码
triggers { 
    cron('0 19 * * 1-5') 
    pollSCM('0 */2 * * 1-5') 
}
相关推荐
_.Switch3 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410833 小时前
文件系统和日志管理
linux·运维·服务器
JokerSZ.3 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
芯盾时代4 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方5 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘5 小时前
NFS服务器
运维·服务器
苹果醋36 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰6 小时前
[linux]docker基础
linux·运维·docker
Jason-河山6 小时前
【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
运维·自动化
lihuhelihu7 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算