Jenkins-流水线【基础介绍】

1、基础知识

1.1、什么是流水线

所谓的流水线,其实就是将我们之前的一个任务或者一个脚本就做完的事情,划分为多个子任务,然后分别执行,他们两者实现的最终效果是一样的,但是由于原始任务划分为多个子任务之后,以流水线的方式来执行,
那么我们可以随时看任意子任务的执行效果,即使在某个阶段出现问题,我们也可以随时直接定位问题的发生点,大大提高项目的效率。
Pipeline,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。
Pipeline作为Jenkins2.X的最核心的特性,提供了一组可扩展的工具,通过Pipeline Domain Specific Language(DSL)syntax可以达到Pipeline as Code的目的,帮助Jenkins实现从CI到CD与DevOps的转变。

1.2、简单的项目发布流水线样式

这个漂亮的展示界面是pipeline配套的BlueOcean插件的功能。

 

1.3、功能特性

特性        说明
代码实现    # 以代码的形式实现,不仅可以被纳入版本控制,还可以通过编辑代码实现目标效果。
可持续性    # 任务的执行,不受jenkins等其他环境的限制。
操作灵活    # 子任务可以随意终止和继续
多功能      # 支持复杂CD要求,包括fork/join子进程,循环和并行执行工作的能力
可扩展      # 支持DSL的自定义扩展以及与其他插件集成。

1.4、 pipeline 风格

1.5、任务编排

自由风格借助于"Build Trigger"中的"Block xxx is building"或者"Post-build Action"中的"Build other projects" 属性将多个独立的巨型任务关联在一起,逻辑复杂(并行|级联依赖)场景下不太适用。
pipeline风格以一个任务的方式来实现,将各种我们能想到的任意复杂场景进行合理的组合。它不仅仅可以以web页面的方式进行定制化配置,还可以直接以Jenkinsfile的方式来实现。不过,无论哪种方式,其核心都是大量的脚本代码的正常运行,而且在web界面定制的脚本格式与
jenkinsfile中的脚本格式一致。通常认为最佳实践是在Jenkinsfile Jenkins中直接从源代码控制中加载Pipeline。

2、基本配置

2.1、任务拆解

2.1.1、Stage【阶段】

一个Pipeline可以划分为若干个Stage,每个Stage代表阶段任务中的一组操作。

2.1.2、Node【节点】

一个Node就是一个Jenkins节点,或者是Master或node,是任务执行时候的目标主机环境。

2.1.3、Step【步骤】

Step是最基本的操作单元,表示完成阶段任务的一系列的命令组成,它遵循jenkinsfile语法。

注意:jenkinsfile 一般有两种表现样式:脚本式 和 声明式

2.2、表现样式

2.2.1、脚本式

node('工作结点') {
 stage 'Prepare'
   任务1执行命令
 stage 'Checkout'
   任务2执行命令
 stage 'Build'
   任务3执行命令
 stage 'Deploy' 
   任务4执行命令
 stage 'Test' 
   任务5执行命令
}
特点解析
 最外层有node{}包裹
 可直接使用groovy语句
 这是jenkins流水线初期通用的一种样式,而且符合我们平常的linux命令操作习惯

2.2.2、groovy语法

Groovy是一种基于Java平台的面向对象语言,使用方式基本与使用 Java代码的方式相同,使用样式如下:
class Example { 
   static void main(String[] args) { 
     // x is defined as a variable 
     String x = "Hello";
     // The value of the variable is printed to the console 
     println(x);
   }
}
自从jenkins进入到2.x时代后,Groovy语法开始大幅度发展,进而演进出 声明式 的语法,而且官方也提
供了非常多的复杂命令,用于实现各种循环、条件、调试、并行、选择等场景。

2.2.3、声明式

pipeline {
  agent any
  stages{
    stage ('Prepare'){
      steps{
     }
   }
   ...
    stage ('Test'){
      steps{
     }
   }
 }
}
声明式特点
最外层必须由pipline{ //do something }来进行包裹
不需要分好作为分隔符,每个语句必须在一行内
不能直接使用groovy语句(例如循环判断等),需要被script {}包裹

2.3、常见指令

无论是脚本式语法还是声明式语法,他们本质上都是执行各种命令,对于不同的命令需要采用专用的语法来实现指定的功能

语法查看:http://192.168.10.21:8080/job/[项目名字]/pipeline-syntax/

2.3.1、echo

作用:输出内容 
示例:echo 'Building..'

2.3.2、sh

作用:执行命令
示例:sh 'command_sample' sh([script: 'echo hello'])

2.3.3、git

作用:获取代码
示例:git credentialsId: 'b...a38', url: 'http://xx/root/xx.git', branch: 'master' git'https://xx/xx.git'

2.3.4、env

作用:设置变量
示例:env.PATH = "/usr/local/java/bin:$PATH"

2.4、插件管理

# 这里是使用推荐安装,已经安装好的了

 

 

posted @ 2023-06-16 12:15  小粉优化大师  阅读(758)  评论(0编辑  收藏  举报