Java+Maven+TestNG+Jenkins - 部署篇

如果想要了解Maven项目的创建,TestNG的创建,请看上一篇:

Jenkins是基于Java开发的一种持续集成(CI),持续交付(CD),持续部署的开源工具。
本文介绍如何将Java + TestNG+Maven的项目在Jenkins上自动构建及部署。

1. 免费安装Jenkins

  1. 下载 jenkins.war文件: https://www.jenkins.io/download/
  2. 打开终端,进入 jenkins.war 文件所在的路径,执行java -jar jenkins.war命令,启动 Jenkins
  3. 终端中显示 "Jenkins is fully up and running"时,说明Jenkins已经启动了,可以通过http://localhost:8080 来访问Jenkins
  4. 进入Jenkins之后,需要先解锁Jenkins
  5. 解锁成功之后就可以安装插件,可以选择安装建议安装的插件,或者先不安装,之后需要什么插件再安装也可
  6. 此时需要创建一个Admin账号,之后就可以通过创建的Admin账号来登录Jenkins
  7. 可以使用默认的URL来访问Jenkins,保存之后就可以进入Jenkins的首页

2. Jenkins的工作原理

当代码库有新的代码Push时 -> 对应代码库的webhook会通知Jenkins代码库有新的Push -> Jenkins通过SCM配置周期性的检查是否webhook有通知信息 -> 检测到通知信息后, Jenkins会访问代码库,获取最新的代码 -> Jenkins开始构建 -> 构建完成后调用Maven进行打包部署 -> 根据配置打印Log和发送邮件。

了解了Jenkins的工作原理之后,我们就需要对 Jenkins和Maven, GitHub, Webhook 进行配置。

3. 全局工具的配置

进入 Manage Jenkins -> Global Tool Configuration 进行全局工具的配置。因为Jenkins 自身采用 Java 开发,所以必须安装 JDK; 本文集成的项目基于 Maven,所以 Maven 也需要安装。

  1. JDK配置
    JDK name - 可以自己定义;
    JAVA_HOME - 选择JDK安装的HOME路径
  1. Maven配置
    a. 如果没有安装Maven,首先需要下载 Maven,将下载好的包放自定义的路径下
    b. 配置Maven的环境变量,先使用命令 vi ~/.bash_profile 打开.bash_profile 文件,添加下边两行代码,然后执行 source ~/.bash_profile 保存修改。
    c. 输入mvn -v查看Maven是否安装成功
    d. 安装成功后,再在Jenkins配置,name 可以自定义,MAVEN_HOME 就是下载的Maven包存放的路径
export MAVEN_HOME=//Users/***/Documents/Workshop/java/apache-maven-3.6.3 
export PATH=$PATH:$MAVEN_HOME/bin

4. GitHub和Jenkins关联的配置

Jenkins要构建代码需要访问GitHub,所以需要获得访问权限。需要生成GitHub的Personal access tokens,然后将这个Token配置在Jenkins里。

  1. 进入Github Setting -> Developer Settings -> Personal access tokens
  2. 点击 “Generate new token” 按钮,选择repoadmin:repo_hook 两个选项,生成一个token,复制生成的token后边会用到
  3. 进入Jenkins -> Manage Jenkins -> Configurate System -> GitHub, 添加一个GitHub Server。API URL 设置为: https://api.github.com; 添加一个 Credentials,如下图所示,填写 GitHub的Personal access tokens,添加成功后,在Credentials部分选择添加成功的这个Credentials。
  4. 这样Jenkins就可以访问你的GitHub了

5. Webhook和Jenkins关联的配置

GitHub的webhook可以提供一个push动作的钩子,每当你push成功的时候,会请求一个你指定的URL。Webhooks是GitHub提供的一个API,Webhooks可以在GitHub仓库发生事件(比如提交代码,创建分支,发布版本)时,通知到Jenkins服务器,执行部署脚本。

- Push 修改后的代码
- Webhook获取到修改后,发送请求给你的网站(Jenkins)服务器
- Jenkins服务器收到更新请求,执行自动部署脚本
- 自动部署脚本执行代码拉取,打包等动作完成更新部署

进入GitHub,进入要进行部署的代码仓库的Settings -> Webhooks -> Add Webhook, 填写内容如下图:


6. 创建Maven 项目

所有的全局配置结束后,就可以创建项目了。

选择页面的 “New Item” 按钮,此时进入的页面能看到很多Jenkin的不同项目的模板,如果模板列表里边没有Maven模板,就需要安装Maven插件。

  1. 进入Manage Jenkins -> manage plugins,在Available里边查找到 Maven Integration plugin,进行安装,安装完成后需要重新启动Jenkins
  2. 再次点击 “New Item” 按钮们就可以看到Maven模板,自定义项目的名字,此名字是全局唯一的,如果重复,就会报错。选择Maven Project,点击OK,Maven项目就创建成功了


7. 配置 Maven 项目

1. General

a. Discard old builds Strategy - 丢弃旧的构建, 服务器资源是有限的,保存太多的历史构建会导致Jenkins速度变慢,服务器硬盘资源也会被占满。所以可以设置"保留构建天数" 和 “保持构建的最大个数”,需要根据实际情况确定一个合理的值。
设置了10个,就能看到只保留了最近的10个构建结果。


b. GitHub Project - GitHub 项目,需要填写项目的URL,只需要填写仓库的地址,不需要填写clone 的 .git 地址
c. This project is parameterized - 项目参数化,可以添加不同的参数。因为自动化需要运行testng.xml 文件,所以这里讲testng.xml 文件进行参数化讲解。
首先: 在pom.xml文件中,指定xml文件名为变量 ${xmlFileName},如下:

        
          maven-surefire-plugin
          2.22.1
          
            
              
              ${xmlFileName}
            
          
        

在回到Jenkins中,添加String parameter,名字设定为pom.xml文件中的变量名 xmlFileName,默认的值可以填写为真正需要执行的xml文件名,如下图:


保存之后,当手动trigger 构建的时候,会提示变量和变量的值,如果你需要修改执行不同的xml文件,也可以进行修改,再构建。

d. Disable this project - 禁用项目, 当选择了禁用项目,在首页这个项目就被禁用了,不能被Trigger

2. Source Code Management

根据不同的项目,选择不同的版本控制工具,我们的项目使用git。
a. Repositories - 仓库部分需要填写项目的仓库地址,也就是clone时填写的地址,以及访问的凭证,也就是GitHub的账号和密码
b. Branches to build - 所用的分支,你也可以修改不同的分支
c. Repository browser - 所使用的代码仓库管理工具,使用GitHub,就选择githubweb

3. Build Triggers

a. Build whenever a snapshot dependency is built - 当project依赖的快照版本被build时,执行本project
b. Build after other projects are built - 当本project依赖的project被build时,执行本project
c. Build periodically - 隔一段时间build一次,不管版本库代码是否发生变化,由时间控制
d. GitHub hook trigger for GITScm polling - GitHub 上有新的代码提交时,会被触发。常用的构建触发器webhooks, 需要在GitHub上边配置。
e. Poll SCM - 配合上面这个这个选项使用,当有代码提交时,Jenkins并不知道,所以需要周期性的去检查代码仓库是否发生改动,如果发生变动,就会自动Trigger。 例如: H/6 * * * *, 意思为6分钟去检查一次。

4. Build Environment

Delete workspace before build starts
Use secret text(s) or file(s)
Abort the build if it's stuck - 根据执行的时间,如果时间执行的时间超过设定的时间,则将构建自动改为失败或者设置一些其他的描述。
Add timestamps to the Console Output - 在Log 信息中添加了时间戳

8. 运行Jenkins查看测试报告

想要看GoCD部署的可以看这里:
Java+Maven+TestNG+GoCD - 部署篇

你可能感兴趣的:(Java+Maven+TestNG+Jenkins - 部署篇)