欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-30 11:31:28
...

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

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语法,做更多的介绍,欢迎大家关注。

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

精选原创推荐

docker容器部署Spring Profile参数策略

linux云服务器存储分区热挂载

Node的进程管理工具pm2

拒绝夜间上线:Eureka热部署服务

大厂必备:ansible 自动化工具

亲测好评:国产开源APM运维监控

APM钉钉告警二次开发pinpoint(附带源码)

Prometheus + Granafa 构建高大上的MySQL监控平台

syncd一款高效开源的代码部署工具

高效开发:IntelliJIDEA的这些Debug技巧你都知道吗

运维必备:goreplay流量复制工具

一款SQL高效审计工具|解放DBA双手

实用技能:git子模块功能

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