jenkins+pipeline流水线的应用(一)

jenkins+pipeline流水线的应用(一)_第1张图片

Jenkins Pipeline 的核心概念

Pipeline是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。Pipeline通过Domain Specific Language(DSL)syntax定义Pipeline As Code并且实现持续交付的目的。

Pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变

Jenkins Pipeline 的功能特性

  1. 代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑、审查和迭代其CD流程。

  2. 可持续性:Jenklins重启或者中断后都不会影响Pipeline Job。

  3. 停顿:Pipeline可以选择停止并等待任工输入或批准,然后再继续Pipeline运行。

  4. 多功能:Pipeline支持现实世界的复杂CD要求,包括fork/join子进程,循环和并行执行工作的能力

  5. 可扩展: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子模块功能

你可能感兴趣的:(jenkins+pipeline流水线的应用(一))