Jenkins之pipline初识
# 一、概述
对于pipline
流水线,一直都没有真正去实践过,虽然我们项目也有好几百个,但是由于项目的独立性,并没有去真正的做模板化的job,另一个原因也是因为是传统方式图形化UI
界面,完全可以解决遇到的所有问题,也比较方便。此次主要是为了扩展知识体系,准备把pipline
相关知识一点点琢磨起来。
关于写博客或者学习新的技能知识,我一般都会先看下网上的一些资料,对于一些很实用的技能,有时候发现,大多的文章都会简单的介绍或者有头无尾。因此我慢慢也养成了查看官方文档的习惯,有的人可能会认为官方文档比较难懂,其实我们读的多了发现很多东西官方都已经很详细的介绍,我们只要耐心的去读就行,最后会发现并没有那么难动。
关于pipline
更加详细的介绍,我这边也是推荐大家按照Jenkins (opens new window)官方介绍一步一步操作,每个人都会有不一样的收获。
# 二、一个简单的例子
这里我是参考的一个博主 (opens new window)的写作方式,先看下实际的效果,再说理论,这样可以很明确知道后续介绍的是什么。
# 2.1 创建pipline job
# 2.2 脚本配置
这里直接选择在Jenkins界面配置相关脚本
- 脚本内容
pipeline {
agent any
environment {
git_url = "https://gitee.com/shanghai_moji/supplier.git"
}
options {
buildDiscarder(logRotator(numToKeepStr: '10'))
disableConcurrentBuilds()
timeout(time: 10, unit: 'MINUTES')
timestamps()
}
stages {
stage('清理工作目录') {
steps {
cleanWs()
}
}
stage('pull代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: "master"]], extensions: [],userRemoteConfigs: [[credentialsId: 'bea96a6a-73a7-473d-b73b-f7bb4f769b2a', url: "$git_url"]]])
}
}
stage('build(构建/CI)') {
steps {
echo '我是构建步骤'
}
}
stage('deploy(发布/CD)') {
steps {
echo '我是发布步骤'
}
}
}
post {
success {
sh "echo 成功了"
}
failure {
sh "echo 失败了"
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 2.3 构建
# 2.4 配置解读
pipline
声明式流水线语法标识,表示采用的语法风格,主要有以下两种方式:
- 声明式: 在Jenkinsfile固定的关键字之内,是一种更简洁、结构化和可读性更强的方法来定义流水线。
- 脚本化:
node
是脚本化流水线语法标识,使用Groovy 脚本语法,是一种更大的灵活性和自由度,允许您以自定义的方式编写流水线,比较适合更加复杂的流水线任务。
其实,日常我们写pipline流水线时,声明式
对于运维来说比较友好。
agent any
angnt
指流水线运行的节点,当我们Jenkins有多个节点组成时,我们可以根据业务指定流水线运行节点,any
表示任何节点,这里由于我们只有一个节点,因此会默认在该节点执行,agent
必须在一个流水线任务中必须存在。
environment
环境变量配置,当流水线中涉及到的变量比较多时,把变量集中管理,也是为了方便后续的维护,变量的声明可以在pipeline以及stage区域当中。
options
Jenkins 项目基础配置,这个在图形化UI界面基本就是勾选项实现
stages
定义流水线步骤,一个stages
中,至少包含一个stage
。
stage
定义流水线构建的实际步骤,每个stage
包含多个steps
。
steps
定义了流水线中的具体操作,并指示Jenkins执行这些操作。可以使用多种方式定义步骤,包括Shell脚本、Jenkins提供的内置命令和插件提供的特定命令。
post
post
部分用于定义在所有阶段执行完毕后要执行的操作。它提供了一种机制来处理流水线的后续任务,例如清理工作空间、发送通知或触发其他操作。
总结
以上为该示例所涉及到的相关参数,其实虽然看上去只是一个简单的demo,但是,我们把一些配置套进去之后,执行相关的命令,即可完成项目的构建及发布操作。
这里需要提醒的一点是,就我个人而言,如果想要学会pipline的相关知识,首先需要对图形化UI
操作比较熟悉,这样学起来可能会更简单一些