0
点赞
收藏
分享

微信扫一扫

Jenkins 流水线语法 01 pipeline作业


Jenkins 流水线语法 01 pipeline作业_jenkins

什么是Pipeline ?

Pipeline

Jenkins的核心是Pipeline(流水线项目),实现了Pipeline As Code即我们将构建部署测试等步骤全部以代码的形式写到Jenkinsfile中。Jenkins在运行Pipeline任务的时候会按照Jenkinsfile中定义的代码顺序执行。写Jenkinsfile是一项很重的工作,如果稍不注意很容易造成Jenkins的流水线任务失败。Jenkinsfile类似于Dockerfile,具有一套特定的语法。

Stage

在Jenkins pipeline中,一条流水线是由多个阶段组成的,每个阶段一个stage。例如:构建、测试、部署等等。

Agent

Jenkins采用分布式架构,分为server节点和agent节点。server节点也是可以运行构建任务的,但我们一般使其主要来做任务的调度。(毕竟server节点挂了就都...)agent节点专门用于任务的执行。随着现在容器的盛行,我们可以将server节点和agent节点在容器或者基于Kubernetes中部署。关于agent节点借助容器可以实现动态的资源分配等等好处。agent节点可以分为静态节点和动态节点。

  • 静态节点是固定的一台vm虚机或者容器。
  • 动态节点是随着任务的构建来自动创建agent节点。

我们可以根据地铁线路图来理解pipeline :

  • pipeline  等同于 13号线
  • agent    等同于  13号线地铁🚇
  • stages   等同于  13号线完整的站点路线
  • stage    等同于   13号线中的一个站点

Jenkins 流水线语法 01 pipeline作业_搜索_02

Jenkins 流水线语法 01 pipeline作业_重启_03

Pipeline作业

安装Pipeline插件

在创建Pipeline类型的作业的时候,需要提前安装好pipeline插件,不然可能会出现找不到pipeline类型的作业。

进入插件管理, 搜索关键字"pipeline" 。安装后重启一下。

Jenkins 流水线语法 01 pipeline作业_jenkins_04

当Jenkins重启成功后,我们创建一个流水线类型的作业。

Jenkins 流水线语法 01 pipeline作业_jenkins_05

点击创建,会进入作业的配置页面。此时我们可以对比一下pipeline类型的项目和自由风格的项目的区别。

 

 

Jenkins file两种不同的管理方式

一种是将代码写到pipeline里面去运行还有一种是下载这个脚本,比如将脚本放在了版本控制库里面,在这里面。一种是直接写到作业里面,还有一个是放在版本系统里面去做控制。

Jenkins 流水线语法 01 pipeline作业_资源分配_06

 

 

与自由风格项目对比

流水线类型作业

Jenkins 流水线语法 01 pipeline作业_资源分配_07

自由风格类型作业

Jenkins 流水线语法 01 pipeline作业_搜索_08

总结: General和构建触发器都是相同的, 自由风格的作业需要在UI页面配置详细的构建过程和构建后操作,而流水线类型的作业是直接将构建过程和操作放到了"流水线"中配置,以代码的方式描述流水线。

 

流水线回放功能(调试pipeline)

借助回放可以修改上次构建所使用的Jenkinsfile代码, 进行更改后可以立即运行进行调试。

Jenkins 流水线语法 01 pipeline作业_资源分配_09

 

Jenkinsfile

Jenkinsfile的是实现Pipeline as Code的核心功能。 该文件用于描述流水线的过程。以下是一个简单的实例:(声明式语法有局限性,比如想写一些if else是不行的,那么需要加上script,里面写上脚本,下面就是声明式里面又嵌入了脚本式的script标签,这样就很灵活了)

pipeline{
//指定运行此流水线的节点
agent { node { label "build"}}

//管道运行选项
options {
skipStagesAfterUnstable()
}
//流水线的阶段

stages{
//阶段1 获取代码

stage("CheckOut"){
steps{
script{
println("获取代码")
}
}
}

stage("Build"){
steps{
script{
println("运行构建")
}
}
}

}


post {
always{
script{
println("流水线结束后,经常做的事情")
}
}

success{
script{
println("流水线成功后,要做的事情")
}

}
failure{
script{
println("流水线失败后,要做的事情")
}
}

aborted{
script{
println("流水线取消后,要做的事情")
}

}
}
}

Jenkins 流水线语法 01 pipeline作业_资源分配_10

  • 使用agent{},指定流水线要运行的节点(可以使用名称或者标签
  • 指定options{}定义流水线运行时的一些选项
  • 指定stages{}(stages包含多个stage,stage包含steps。是流水线的每个步骤)
  • 指定post{}(定义好此流水线运行成功或者失败后,根据状态做一些任务

解释一下上面的pipeline

在pipeLine里面需要指定构建节点,构建节点里面有些性质,比如名称,名称可以确定唯一的节点,名称是一个,标签是一组,一个标签下面可以包含多个不同的节点。使用标签会找该标签下面可用的节点

Jenkins 流水线语法 01 pipeline作业_资源分配_11

Options这个是构建时候的选项,比如参数,丢弃旧的构建

Jenkins 流水线语法 01 pipeline作业_资源分配_12

post就是构建后的操作,post就是根据流水线的状态去做一些事情,always是不管怎么样总是要做的一些事情

Jenkins 流水线语法 01 pipeline作业_重启_13

举报

相关推荐

0 条评论