前面我说过,要陆续介绍模拟真实开发场景。这篇,来补充一篇Jenkins+Pipeline+groovy的开发环境。主要环境就是Eclipse,代码仓库服务采用github。我知道,有些人对于这个已经很熟悉,有些人还没有使用过git,更别说提交代码了。希望这篇,能带给你体验一次开发的感觉,体验一次自己修自己bug的的过程。
1.前提条件
这篇,我不会一步一步介绍如何搭建环境。有些过程可能就一句话带过,重点我肯定会讲出来,如果不会,请自己搜搜相关文章网页等。完成这篇文章,包括以后练习,你需要以下软件环境。
1)Win7/Win10系统,有Mac本就更好了
2)安装java jdk 1.8或者以上
3)安装Groovy 2.5.3以上版本,官网有zip和exe安装包下载,建议选择exe文件安装,勾选添加到path(系统环境变量)
4)下载Eclipse,当然IJ IDEA也行,我使用Eclipse
5)Eclipse上安装groovy 插件,在市场搜索,还要安装jenkins editor插件
6)Eclipse上配置好github的账号,不会的自己网上搜。
以上是基础环境,都很简单,自己通过网络搜索就能学会。
2.下载项目代码
这里我就不贴全部图了,在Eclipse工程视图,右键选择import,然后选择git->project from git->clone uri,大概如下图。
我github地址:https://github.com/Anthonyliu86/Pipeline-learn-demo-anthony
源码git地址:https://github.com/Anthonyliu86/Pipeline-learn-demo-anthony.git
把这个git地址复制到下图URI输入框,自动填充其他字段,如果你配置了git账号。
然后下一步,到下面这个页面,选择图中这一项。
这样git项目就自动导入到你的Eclipse环境中。
3.项目基本结构介绍
导入完成,项目基本结构如下(由于这个github项目我一直会更新,到时候你导入的可能和下图有些出入)
第一个是lib下有一个jenkins的开发依赖包,你可以去maven仓库下载得到,这里我没有引入maven项目。src下的文件是我写pipeline测试脚本的文件,相当于测试脚本,jenkins 上stage view就来自这个文件内容。module下文件,类似我们开发过程一些工具类的一个模块,我会把这个系列介绍的常用方法写成方法,放在这个模块文件中。第三个testdata文件下一些文件,是一些测试文件,例如本篇,我需要演示findFiles这个方法,传递参数就是查找.log文件类型。以后我可能会增加一个script文件夹,用来放我一些旧的pipeline文件。
4.代码提交
在Eclipse上找到src下这个groovy文件,然后open with,选择jenkins editor打开,因为jenkins editor打开有代码提示和部分语法高亮的有点,还有outline,方便我们查找这个类文件的方法和属性。下面,我们增加一个打印语句,然后进行保存,提交代码操作。
代码如下:
1
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 1import hudson.model.*;
2
3println env.JOB_NAME
4println env.BUILD_NUMBER
5println env.WORKSPACE
6
7pipeline{
8
9 agent any
10 stages{
11 stage("init") {
12 steps{
13 script{
14 println "欢迎来到Anthony的Pipeline教程。"
15 model_test = load env.WORKSPACE + "/pipeline/module/pipeline-demo-module.groovy"
16 }
17 }
18 }
19 stage("Test Method") {
20 steps{
21 script{
22 log_files = model_test.find_files('**/*.log')
23 }
24 }
25 }
26 }
27}
28
29
30
31
上面代码 println "欢迎来到Anthony的Pipeline教程。" 是这次新增的代码,你只要ctrl+s,注意观察Eclipse中下面这个视图。(先不要管上面代码的含义,部分你看得懂,部分看不懂),我们刚刚保存之后,pipeline这个文件会自动添加到unstaged changes框中。
1)你保存之后,任何变化的文件都会自动添加到unstaged changes 框
2)在1中选择文件,拖拽到2中,以后变动文件多了,需要你选择文件拖拽到staged changes框
3)在commit message框,输入一句话,例如“添加一句打印代码”
4)点击commit and pust按钮,等待几秒就代码提交到了github远程仓库。(不放心,你可以去你guthub项目刷新检查)
这样,模拟一个开发代码提交过程就结束。
5.更新代码
工作中,我们过一段时间就需要从服务仓库下载最新代码。多人工作代码下载和提交冲突场景,我们这篇不介绍,以后遇到了,你自然会去了解和实践。现在我们要模拟其他开发修改了代码,然后本地我们要更新代码操作。在git中,拉取代码是pull,提交代码是push。
我们自己通过github网页,把上面添加的打印语句删除这个过程,来模拟其他开发者的代码变动场景。
上图,我们可以看到我们之前做过的提交,“增加以后代码”这个是我提交之前写的commit message内容。编辑,删除这行打印语句,然后保存。
我们在编辑这个文件,发现,我们前面写的中文内容是显示乱码,所以以后我尽量不用中文写注释,否则github上代码太难看。
提交之前,给一个commit message,然后点击commit change按钮。
回到Eclipse软件页面,右键pipeline这个项目,选择team菜单,次级菜单选择pull就可以。(有pull和pull…,这里不要点击pull…,以后如果你要和其他branch同步代码,你可以点这个pull…),pull操作之后,可能出现下面这张图。
拉取代码就介绍到这里。
6.Jenkin job测试
我在我环境下新建一个pipeline风格的job,你可以参考我设置,然后进行构建。
http://65.49.216.200:8080/job/pipeline-project-demo/configure
上面#18 #19是成功构建, #17里面的报错,我这里提一下原因。原因就是我在module文件下的pipeline-demo-module.groovy里面结尾部分没有写“return this;”,就出现了
java.lang.NullPointerException: Cannot invoke method find_files() on null object
你可以复现这个问题,然后修改代码,再一次模拟提交代码-修复bug-下载更新代码操作。这篇环境搭建就先介绍到这里,下一篇,解释这篇新出现的代码的含义,还有部分Jenkins debug的技巧。