git+jenkins+maven持续集成实践(二)

阿里云(阿里云的突发性能实例拿来做临时测试挺好的)服务器分配如下所示:(都配置好jdk1.8环境)

172.17.217.131 web-server服务

172.17.217.130 git服务

172.17.217.129 jenkins服务(同时模拟开发人员pc)

1.部署环境

git服务器操作:

1.1.安装git服务

yum install git

1.2.创建git用户

useradd git

passwd git

1.3.创建仓库

su – git #直接会进入到git用户的家目录

mkdir app.git

cd app.git

git –bare init #初始化仓库

ls -l 可以查看app.git仓库初始化完成

1.4.验证git服务(jenkins服务器上操作)

yum install git #下载安装git客户端

git clone https://github.com/otale/tale.git #下载tale项目,路径随意,我此处是root家目录下
注:我们使用开源项目tale来做测试,因为个人不会java开发,缺少maven项目,所以一直没有测试过完整的流程,正好这个项目可以拿来测试。

1.5 生成公钥并拷贝到git服务器上,生成公钥略过

ssh-copy-id git@172.17.217.130 #第一次需要输入git服务器的git用户的密码

需要注意的是,要将/home/git/.ssh/authorized_keys文件权限修改下。

chmod 600 /home/git/.ssh/authorized_keys

1.6 用git clone验证

mkdir /git && cd /git

配置下git客户端的用户信息

git config –global user.emailwfsauto@163.com

git config –global user.name “daquan”

再来git clone,由于app.git仓库是空的,所以会很快,并提示是个空的仓库。

[root@jenkins git]# git clone git@172.17.217.130:/home/git/app.git
Cloning into ‘app’…
remote: Counting objects: 297, done.
remote: Compressing objects: 100% (233/233), done.
remote: Total 297 (delta 22), reused 297 (delta 22)
Receiving objects: 100% (297/297), 6.35 MiB | 0 bytes/s, done.
Resolving deltas: 100% (22/22), done.
[root@jenkins git]#

忽略我的操作输出,文档是后来加的。
将之前下载的tale项目push到git服务器上的app.git仓库中

mv /root/tale /git/app && cd /git/app

[root@jenkins app]# ls
bin LICENSE package.xml pom.xml README.md README_ZH.md src

然后提交到git仓库

git add .

git commit -m “add project tale”

git push origin master

1.7 安装Jenkins 2.107.3版本(略)

1.8配置jenkins

系统配置:

进入“系统管理”–“系统设置”,主要是把web-server这台服务器通过ssh方式添加进来。

还需要将jenkins服务器的公钥添加到web-server服务器的authorized_keys内,通过公钥加密私钥解密。

《git+jenkins+maven持续集成实践(二)》 图片.png

参数说明:
Name: web-server
Hostname: 172.17.217.131
Username: root
Remote Dirctory: /usr/local/tomcat/webapps 这个意思是把代码发布到172.17.217.131的/usr/local/tomcat/webapps目录下,如果没有这个目录的话需要手动创建。
Passphrase/Password: 输入172.17.217.131这台服务器的密码,当然也可以像我这样使用私钥来代替。

jdk,maven,git配置:
进入“系统管理”–“全局工具配置”

《git+jenkins+maven持续集成实践(二)》 图片.png

1.9 构建maven项目

点击“新建”–“构建一个maven项目”,项目名定义为java_tale。如下图:

《git+jenkins+maven持续集成实践(二)》 图片.png

2.0 源码管理

在“源码管理”项中选择git,只需配置git仓库的地址“Repository URL”,之前我们再jenkins服务器上把公钥传输到了git服务器上了,所以不需要做认证,如下图:

《git+jenkins+maven持续集成实践(二)》 图片.png

2.1 构建触发器

《git+jenkins+maven持续集成实践(二)》 图片.png

每5分钟执行一次

2.2 build配置

在“Build”选项中,Goals and options输入: clean package 如下图:

《git+jenkins+maven持续集成实践(二)》 图片.png

2.3 构建后的配置

在“Post Steps”选项中,配置如下操作:

《git+jenkins+maven持续集成实践(二)》 图片.png

配置说明:
Name: 选择需要部署的web服务器,之前我们ssh增加了一台,所以这里可以直接选择
Source files:需要部署到目标服务的打包成果路径
Remove prifix: “Source files”配置的路径中要移除的前缀
Remote directory: 成果要发送到的远程目标服务目录路径,这个路径和第一步配置中的Remote Directory对应。(此处再加路径的/path的话,则成果会存在第一步配置中的Remote Directory/path下)
Exec command: 成果发送完成后,需要执行的命令

2.4 测试

配置上之后,构建此项目

《git+jenkins+maven持续集成实践(二)》 图片.png

查看控制台输出日志:

《git+jenkins+maven持续集成实践(二)》 图片.png

《git+jenkins+maven持续集成实践(二)》 图片.png

可以在/usr/local/tomcat8080/webapps/tale目录下看到一个编译成功的jar文件,如图

《git+jenkins+maven持续集成实践(二)》 图片.png

然后运行jar文件,/usr/bin/java -jar /usr/local/tomcat8080/webapps/tale/tale-least.jar,此服务监听在9000端口上。我们可以用nginx作反向代理转发至9000端口即可正常访问.
可以看到成功了。访问测试:

《git+jenkins+maven持续集成实践(二)》 图片.png

备注:在编译此开源项目时遇到不少坑,其中一个典型的问题就是该项目的pom.xml文件需要修改一下。
参考:https://blog.csdn.net/hongchangfirst/article/details/7527063

优化部分:可以再加一个gitlab来做到git仓库的可视化。或者整个流程完全容器化。

点赞