Jenkins Pipeline 的核心概念
Pipeline是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。Pipeline通过Domain Specific Language(DSL)syntax定义Pipeline As Code并且实现持续交付的目的。
Pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变
Jenkins Pipeline 的功能特性
代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑、审查和迭代其CD流程。
可持续性:Jenklins重启或者中断后都不会影响Pipeline Job。
停顿:Pipeline可以选择停止并等待任工输入或批准,然后再继续Pipeline运行。
多功能:Pipeline支持现实世界的复杂CD要求,包括fork/join子进程,循环和并行执行工作的能力
可扩展:Pipeline插件支持其DSL的自定义扩展以及与其他插件集成的多个选项。
Jenkins Pipeline 的语法模式
Pipeline模式和Freestyle的UI模式有所不同,通常有一定的语法规范。同时pipeline有着Freestyle模式无法比拟的优势,即在上游/下游Job调度中无需进行子job的关联调度,在同一job中可配置完成。
Jenlins Pipeline的脚本语法是由Groovy语言实现,学习成本较低,简单易学。目前Jenlins Pipeline支持两种语法:
Declarative 声明式(在Pipeline plugin 2.5中引入)
Scripted Pipeline 脚本式
通常推荐在Jenkins中直接从源代码控制(SCM)中载入Jenklinsfile Pipeline,并把Jenklinsfile配置文件放入gitlab等代码管理库进行管理和方便编排。
Pipeline 的语法入门应用
Pipeline模式支持两种语法,以Scripted Pipeline 脚本式语法部署spring boot项目为例,可做如下配置:
node {
def mvnHome
def workspace = pwd()
stage('Preparation') { // for display purposes
// Get some code from a GitHub repository
git 'https://gitee.com/Tsail/demo.git'
// Get the Maven tool.
mvnHome = tool 'maven3.3.9'
}
stage('Build') {
// Run the maven build
if (isUnix()) {
sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore clean install"
} else {
bat(/"${mvnHome}\bin\mvn" -Dmaven.test.failure.ignore clean install/)
}
}
// 可采用Freestyle模式的脚本配置。无需大型调整
// workspace,最好和jar包项目模块名称一致,减少传参
stage('Deploy') {
sh "'/scripts/deploy.sh' ${workspace} deploy"
}
}
agent:该部分指定整个Pipeline或特定阶段将在Jenkins环境中执行的位置,具体取决于该agent 部分的放置位置。该部分必须在pipeline块内的顶层定义 ,也可以使用在stage级。
stage:表示这个Pipeline的某一个执行阶段(使用stage使得逻辑变得更加简单明了)
steps: 包含一个或者多个在stage块中执行的step序列(在这里执行操作:运行maven或者部署等等)
后续的话会对常用的声明式pipeline语法,做更多的介绍,欢迎大家关注。
精选原创推荐
docker容器部署Spring Profile参数策略
linux云服务器存储分区热挂载
Node的进程管理工具pm2
拒绝夜间上线:Eureka热部署服务
大厂必备:ansible 自动化工具
亲测好评:国产开源APM运维监控
APM钉钉告警二次开发pinpoint(附带源码)
Prometheus + Granafa 构建高大上的MySQL监控平台
syncd一款高效开源的代码部署工具
高效开发:IntelliJIDEA的这些Debug技巧你都知道吗
运维必备:goreplay流量复制工具
一款SQL高效审计工具|解放DBA双手
实用技能:git子模块功能