前面我说过,要陆续介绍模拟真实开发场景。这篇,来补充一篇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,方便我们查找这个类文件的方法和属性。下面,我们增加一个打印语句,然后进行保存,提交代码操作。

代码如下:

import hudson.model.*;

println env.JOB_NAME
println env.BUILD_NUMBER
println env.WORKSPACE

pipeline{
	
	agent any
	stages{
		stage("init") {
			steps{
				script{
					println "欢迎来到Anthony的Pipeline教程。"
					model_test = load env.WORKSPACE + "/pipeline/module/pipeline-demo-module.groovy"
				}
			}
		}
		stage("Test Method") {
			steps{
				script{
					log_files = model_test.find_files('**/*.log')
				}
			}
		}
	}
}


上面代码 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的技巧。

 

 

 

 

 

 

 

 

 

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐