本文通过一个声明式流水线的HelloWorld程序做一下流水线基础入门,对常用的流水线参数进行简要说明
流水线比较好理解,类比于现实生活中的生产流水线,每个流程只做一件事,通过传送带把这些流程连接在一起,一个流程完成后的结果交由后续流程继续操作。
Jenkins的流水线也是这样工作的,最简单的认知是它可以把若干可通用的Shell脚本像胶水一样连接起来,虽然这个比喻比较形象,但这只是流水线的冰山一角。
在Jenkins升级2.x版本之前,流水线只有一种脚本式流水线(Script Pipeline),当升级2.x版本后,新增了声明式流水线(Declarative Pipeline)
无论是哪种流水线,都需要为流水线定义流水线脚本,称之为 Jenkinsfile
,使用Groovy语法写成
在说明声明式流水线前,有必要了解一下脚本式流水线的基本概念,这样有利于我们知道声明式流水线的好处与脚本式流水线的限制
在脚本化流水线语法中, 一个或多个 node
块在整个流水线中执行核心工作。
虽然这不是脚本化流水线语法的强制性要求, 但它限制了你的流水线的在 node
块内的只能做两件事:
Jenkinsfile (Scripted Pipeline)
node { //需要有一个或多个node节点表示一系列操作 stage('Build') { //每个stage表示一个步骤 // Build步骤内容 } stage('Test') { // Test步骤内容 } stage('Deploy') { // Deploy步骤内容 } }
声明式流水线的基本语法类似于脚本式流水线,但是其功能更加强大
声明式流水线最外层Jenkinsfile脚本节点是 pipeline
声明式和脚本化的流水线从根本上是不同的。 声明式流水线的是 Jenkins 流水线更近的特性:
Jenkinsfile (Declarative Pipeline)
pipeline { // pipeline是声明式流水线的一种特定语法,在块内定义了整个流水线的所有内容 agent any // agent是声明式流水线的一种特定语法,它指示 Jenkins 为整个流水线分配一个执行器 (在节点上)和工作区,等效于脚本式流水线node块 stages { // 所有流程(状态)的外层块,仅有一个 stage('Build') { //每个stage为一流程,与脚本式基本一致,每个stage可以定义名称 steps { //步骤块,内部包含具体操作 sh 'make' // sh操作,其引号间的文字会当成shell直接执行 } } stage('Test'){ steps { sh 'make check' junit 'reports/**/*.xml' //junit使用匹配的定义测试xml进行单元测试 } } stage('Deploy') { steps { sh 'make publish' } } } }
有了上边的基础,我们来写一个最简单的HelloWorld声明式流水线吧!
点击左上角的新建项目(new item)
我们这里选择 流水线
,输入工程名称 Hello Pipeline
, 确定
第一次用Gimp截的图,有别的好用的截图并编辑工具请大家推荐波
这里的流水线与多分支流水线的区别我认为有两个,一个是流水线只能指定一个分支的Jenkinsfile,还可以把脚本直接写到工程中,而多分支流水线可以指定多个分支的Jenkinsfile,但是不能把脚本写在工程中;SCM插件也支持多分支流水线,而单分支流水线没有
填写描述,勾选 This project is parameterized
添加参数,选择 String parameter
这里我们加一个参数,一个字符串参数,这样我们在Jenkinsfile中就可以取到这个值了
添加这个参数是为了让大家先有个参数化构建的准备
往下滑动,找到 流水线
, 定义
处可选直接写脚本还是走版本控制,这里直接使用脚本
在 脚本
处输入如下内容
pipeline { agent any; environment { //环境变量 GREETING="Hello"; } stages{ stage('打招呼') { steps{ sh 'echo "$GREETING $TITLE"' } } } post { //构建完成后置操作 aborted { //如果构建中断,则执行 echo '构建被中止!' } success { //构建成功执行 echo '构建成功!' } failure { //构建失败执行 echo '构建失败!' } } }
语法不会写怎么办?上边的图中有 流水线语法(Pipeline-Syntax)
,通过这个语法功能就可以生成部分脚本
点保存,我们去准备构建这个工程
点击 Build with Parameters
这里我们看到刚才定义的参数值是可以修改的,有兴趣可以改下试试,然后 开始构建
输出如下
把鼠标放在打招呼下边的绿色框上,点出现的 logs
我们可以看到输出了预期的值
查看下Post Actions的日志
我们可以通过左下角的构建版本号,如当前是 #1
,点进去,选择 Console Output
查看详细的执行日志
细心会发现构建的工作空间在我们指定的 Jenkins家目录/workspace/当前工程名
内
声明式流水线HelloWorld工程就先写这些
在家里的笔记本装的Debian用了一年了快,这次写文章截图用的Gimp:sweat_smile:感觉好奇怪,有没有什么好用的Linux平台的截图工具推荐下啊,能直接选区截图再编辑的?
不写不知道,原来流水线里的知识点这么多,下篇打算写下基本环境的配置与拉取Git代码
Jenkins官方文档创建您的第一个Pipeline
本文系Hellxz学习与实践文章,禁止布布扣、码迷、爱码网等第三方爬虫网站爬取,转载请在醒目位置注明出处: https://www.cnblogs.com/hellxz/p/jenkins_pipeline_helloworld.html