环境
- gitlab: http://192.168.62.206
- jenkins: http://192.168.62.210:8080
- depserver: 192.168.63.116
实例说明
- gitlab工程地址:git@192.168.62.206:Mall/eureka.git
- jenkins构建完成后本地存放位置:/target
- depserver工程目录:/home/jiagouzu/tingyun/target/
流程
- jenkins通过gitlab pull工程代码
- jenkins通过本地maven工具构建、打包工程代码
- jenkins把完成的.jar推送到服务器
相应目录下
注意事项
jenkins pull代码时,gitlab要确保有jenkins的Deploy key
key信息
gitlab的项目“Mall/eureka”启用deploy key(settings–> Repository–>Deploy Keys):
jenkins配置说明
jenkins配置depServer节点
- 添加depserver服务器节点(系统管理–>系统设置–>SSH Servers)
新建一个Server,完成后选择高级配置相关信息:
其他保持默认,最后选择Test Configuration可测试下
配置拉取gitlab地址私钥信息
这里就不多讲了,具体步骤可见jenkins基本使用
创建项目
- 新建一个项目,类型为自由风格的(maven类型有很多限制),这里我的名称为“商城”
配置“商城”,在General标签里配置相关信息,注意点开“高级”选择“使用自定义的工作空间”
源码管理
构建触发器
手动还是自动构建,这里也可以看之前的文章jenkins基本使用
构建环境
构建(mvn命令执行构建)
这里注意mvn命令的位置,jenkins默认安装选择在
/home/apache-maven-3.5.2/bin/mvn
可通过(系统管理–>全局工具配置)进行相应的更改,但要给予jenkins执行的权限,这里我把命令ln到/usr/local/bin目录下,chmod +x mvn
如果没有设置会报类似错误:
[/target] $ /bin/sh -xe /tmp/jenkins6497126245319590786.sh + mvn clean package /tmp/jenkins6497126245319590786.sh: line 2: mvn: command not found Build step 'Execute shell' marked build as failure SSH: Current build result is [FAILURE], not going to run.
构建后操作(完成构建后的部署工作)
选择“Send build artifacts over SSH”,注意要安装 over ssh插件
注意: 这里的Remote directory指的就是前面配置depserver的工程目录地址“/home/jiagouzu/tingyun”
点击完成后就可以测试了,默认maven构建的配置文件直接找的官方地址,在构建日志当中会出现如下信息
https://repo.maven.apache.org/maven2/org/hibernate/hibernate-validator/5.3.6.Final/hibernate-validator-5.3.6.Final.jar (727 kB at 2.4 kB/s) Downloading from central: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-actuator/1.5.9.RELEASE/spring-boot-starter-actuator-1.5.9.RELEASE.jar
这里需要注意:
第一次构建时,maven需要下载部署工程所需要的jar包;
改善办法之一是同开发要一份maven构建工具的settings.xml 配置文件替换你的maven工具里的settings.xml(一般开发会有自己的内部仓库),在这里是我的jenkins服务器中的“/home/apache-maven-3.5.2/conf/settings.xml”,注意修改里面的“
/MavenRepository ”这是指你存放maven工具所需jar包的目录,别忘了给jenkins能执行的权限。最后测试输出类似信息证明配置成功:
[INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.246 s [INFO] Finished at: 2018-03-07T14:54:53+08:00 [INFO] Final Memory: 36M/203M [INFO] ------------------------------------------------------------------------ SSH: Failed to get hostname [192v168v62v210: 192v168v62v210: 未知的名称或服务] SSH: Connecting with configuration [192.168.63.116] ... SSH: EXEC: STDOUT/STDERR from command [/bin/bash /home/mall_start.sh start] ... SSH: EXEC: completed after 200 ms SSH: Disconnecting configuration [192.168.63.116] ... SSH: Transferred 1 file(s) Finished: SUCCESS