随着软件开发复杂度的不断提高,团队开发成员间如何更好的协同工作以确保软件开发的质量已经成为开发过程中不可回避的问题。尤其是近年来敏捷开发在软件领域越来越火,如何能在不间断变化的需求中快速适应和保证软件的质量显得尤其重要。持续集成正是针对这一问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能更快的开发内聚的软件。
Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更重要的业务逻辑实现上。同时Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性。
Jenkins提供了大量的插件,这些插件使Jenkins能实现很多复杂的功能。下面列出了部分持续集成所需的插件:
安装插件的步骤:在面板界面左侧的导航栏中选择Manager Jenkins ---> System Configuration ---> Manager Plugins,在插件管理页面中点击“可选插件”选项卡,然后在输入框中填写需要安装的插件名字。
全局工具配置主要对一些常用工具的名称、版本、路径和配置文件进行设定。在面板左侧的导航栏中点击“系统管理”,进入到“管理Jenkins”界面,选择界面中的System Configuration ---> Global Tool Configuration后进入到“全局工具配置”界面,依次对Maven配置、JDK、Git、Maven、NodeJS、Sonar Scanner等进行配置。
主要用于Maven的主配置文件settings.xml的设定。settings.xml包含仓库镜像、本地镜像和认证信息等。一般默认的路径有两种:Global Maven Settings --- ${M2_HOME}/conf/settings.xml;User Maven Settings --- ${user.HOME}/.m2/settings.xml。如果两个文件都存在,会对内容进行合并,优先应用当前目录下settings.xml中的设定。
如果已经安装过JDK,这里需要配置JDK的JAVA_HOME。
Git的配置也很重要,因为大多数的任务都要获取Git仓库中的代码,所以这里需要配置Git的执行路径。
主要用于配置Maven的主目录,可以添加多个,用Name来区分。如果系统中已经安装Maven,这里直接填写MAVEN_HOME对应的路径,Jenkins会在Master节点上进行检查,查看该目录是否有效。
SonarQube Scanner用于代码的静态质量扫描,可以自动安装,也可以手动将其安装在Master服务器上。这里采用的是自动安装,在“版本”下拉选框中选择所要安装的版本号即可。
NodeJS是一个JavaScript的运行环境,作为打包工具或者构建工具。如果要在Jenkins中实现编译、打包前端代码,则需要安装此软件。
在Jenkins主面板左侧的导航栏中选择“系统管理”,进入到“管理Jenkins”界面,点击此界面中“系统配置”模块下的“系统配置”选项,进入到“配置”界面。
此项是可选的,指定安装Jenkins的HTTP地址。这个值用来在邮件中生产Jenkins链接。此项是有必要的,因为Jenkins无法探测到自己的URL地址。
配置SonarQube所在服务器的信息,建立Jenkins和SonarQube之间的通信。
Name:自定义一个适合的名字;
Server URL:SonarQube所在服务器的URL(IP或域名加端口,端口号默认为9000);
Server authentication token:这里填写SonarQube服务器当前用户的令牌。
SonarQube令牌的生成方法:登陆SonarQube服务器,选择“头像”--->“我的账号”--->“安全”--->在“生成令牌”文本框中输入自定义的名称,然后点击“生成”按钮。生成的令牌ID只会显示一次,所以如果有需要,可以进行备份
生成SonarQube当前用户的令牌ID后,回到Jenkins的系统配置界面,并定位到“SonarQube servers”模块,点击“Server authentication token”选项的“添加”按钮,选择“Jenkins”,进入到“添加凭据”窗口。
类型:选择Secret text;
Secret:填入SonarQube当前用户生成的令牌ID;
ID:自定义一个名称。
填写完毕后,点击“添加”按钮,然后在“Server authentication token”的下拉选框中选择相应的凭据即可。
配置将要构建的代码所在的GitLab服务器信息,建立Jenkins和GitLab服务器之间的通信。
Connection name:自定义一个名称;
Gitlab host URL:GItLab所在服务器的HTTP地址;
Credentials:添加GitLab API token,该token由GItLab生成。
GitLab API token的生成方法:进入GitLab主页,点击页面右上角的头像,在出现的悬框中点击“Settings”,进入到设置界面。在设置界面左侧的导航栏中点击“Access Token”,进入“Access Token”界面。
Name:自定义一个名称;
Expires at:添加生成token的时间(非必填项);
Scopes:勾选api复选框;
Create personal access token:点击此按钮后会生成一个token,且生成的token会展示在“Active Personal Access Tokens”列表中。
生成GitLab API token后,回到Jenkins的系统配置界面,并定位到GitLab模块。点击Credentials的“添加”按钮,选择“jenkins”,进入到“添加凭据”窗口。
类型:选择GitLab API token;
API token:填入在GitLab中生成的API token;
ID:自定义一个名称(非必填项)。
所需的信息配置完毕后,点击“Test Connection”按钮,测试Jenkins和GitLab之间的连接是否成功。
若要将构建后生成的jar包(后端)或dist目录文件(前端)推送到远程服务器中,需配置此模块。在此我们选择用户名和密码来连接远程服务器。
Name:自定义一个名称。在Job中使用Publish over SSH插件时,此名称将出现在“SSH Server”中“Name”选项的下拉列表中;
Hostname:服务器的主机名或IP地址;
Username:服务器的用户名;
Remote Directory:远程服务器上真实存在的目录,而且“Username”指定的用户要有访问此文件夹的权限,插件将把文件推送到此目录下;
Use password authentication, or use a different key:勾选此选项,并在“Passphrase / Password”中输入与Username匹配的密码。
配置完后点击“Test Configuration”,测试是否可以连接成功。
在Jenkins的使用中邮件提醒是一个常用功能,Jenkins默认安装了 Mailer Plugin插件用于实现此功能,但 Mailer Plugin功能简单不能满足一些复杂需求,如:自定义邮件标题、内容等。Extended E-mail Notification(ext mail)是一个功能更为齐全,使用也更为复杂的插件。下面对此插件的配置做简要的说明。
SMTP Server:SMTP服务器的地址;
SMPT Port:SMTP的端口号,默认为25;
SMTP Username:即在Jenkins Location模块中填写的“系统管理员邮件地址”;
SMTP Password:“系统管理员邮件地址”所对应的密码;
Default user E-mail suffix:默认的邮箱后缀;
Default Content Type:默认的邮件内容格式;
Default Recipients:默认收件人的邮箱地址(可填写多个,中间用英文逗号隔开即可);
Default Subject:邮件标题。例如,$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!。其中,$PROJECT_NAME为构建项目名称,$BUILD_NUMBER为构建编号,$BUILD_STATUS为构建状态;
Default Content:邮件内容;
1 2 3 4 5${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志 6 7 8 10
(本邮件由Jenkins系统自动发布,请勿回复!) | 14
17 构建结果 - ${BUILD_STATUS} 18 |
19
22 构建信息 23 |
24
27
|
38
Changes Since Last
41 Successful Build:
42 |
43
46
%c ",showPaths=true,changesFormat=" [%a]",pathFormat=" %p"} 49 |
50
Failed Test Results
53 |
54
$FAILED_TESTS57 |
58
构建日志 (最后 100行):
61 |
62