搜索了很多关于 jenkins 远程主机部署服务的帖子,发现写的都非常的乱,有的虽然可以部署成功,但是成功之后回想一下如何部署的流程,显得毫无头绪。这就是这篇文章诞生的背景。
Jenkins 配置流程
- 安装支持远程服务的插件
- 配置 jenkins 构建工具
- 配置远程主机地址 IP user/password
- 配置要连接的 gitlab
- 创建任务执行任务
执行配置流程
step1 安装插件
- Publish Over SSH
- Deploy to container
- Maven
step2 配置工具
在部署 Jenkins 的机器上获取这些工具的 HOME,例如 JAVA_HOME
、MAVEN_HOME
。Jenkins 上虽然有自动安装,不要使用了,使用起来更麻烦。这里如果配置错误,会被自动检查出来的。
- JDK
- Git
- Maven
step3 配置远程主机
配置需要连接的主机的地址。
注意:这里一共有两种方式连接远程主机
,我这里写的是用户名/密码的方式
,还有一种使用 ssh 公钥/密钥
。我嫌公钥的方式太麻烦,所以使用的是用户名/密码的方式。
- Passphrase:远程主机用户的密码
- Name:为远程主机起一个名称
Hostname:远程主机 IP
Username:远程主机用户(要和上面的密码匹配)
Remote Directory:要上传到远程主机的路基(这个可以理解为一级路径,因为构建 Maven 项目是还会再指定一个路径,指定的路径就会在这个路径下面)
检查一下是否可以连接远程主机
step4 配置 gitlab
下图填写 URL
之后肯定会错误的,要配置认证,如果配置正确的话,就会如图不会出现错误。
Connection name:为 gitlab 起一个名字
Gitlab host URL:gitlab 的 ip 地址+端口,例如:http://127.0.0.1:8888
Credentials:认证,认证一定要正确。否则暂时不用进行下去
创建任务
step1 创建项目
新建任务 -> Maven 项目 -> 确定
step2 配置项目
通用设置
一个地方比较重要:
- gitlab 的地址,上文我们已经说过配置 gitlab 了,配置成功之后,直接下拉框就可以选择了。
- 描述 工程描述
源码管理
这里的都比较重要,第一点选择 Git
方式。
- Repository URL:你仓库的路径(你 gitlab 工程的路径)
- Credentials:认证(必须要正确,jenkins 在这里也会自定检查,否则页面会抛出红色日志)
- 指定分支:指定你要构建的工程的分支,我的就是 master 分支
构建触发器
可以自己设置自动构建之类的, 感兴趣的可以试试。
构建(打包)
Root POM:可以修改,一般都是在根下
Goals and options:指定自己的打包命令
构建后设置
最主要的地方是在这里。
- Name:这里的 Name 是你前文已经配置过的,为远程主机起的名字。下拉选择一下。
- Source files:构建之后的源文件路径,例如:
target/xxx-xxx.jar
,我看到很多人喜欢写*.jar
,个人不是很喜欢。如果jar
包在Maven
子工程的话,需要这样写xxx/target/xxx-xxx.jar
- Remove prefix:移除前戳,和上面差不多
target/
,在子工程就是这样xxx/target/
- Remote directory:细心的小伙伴是不是发现前文已经配置过了,这里配置的路径相当于和前文配置的路径做一个拼接。假如前问配置的是
/opt/service/
这里再配置一个/bin
,最后你的jar
包就会被上传到/opt/service/bin
路径 - Exec command:这里我执行了一个脚本,执行脚本的小伙伴注意一下,这里还是挺麻烦的。Jenkins 不识别系统已经配置的
path
,也就是/etc/profile
,如果执行命令的话,需要写上全路径