下面讲一下如何通过一台jenkins服务器构建后将代码分发到其他的远程服务器,即jenkins自动部署代码到多台服务器。
1、下载 pulish over ssh 插件
2、系统管理 -> 系统设置(全局设置和路径), 拉到最下面 找到 Pulish over SSH, 进行设置ssh key
Passphrase jenkins用户 SSH Key 的密码,如果未设置,可以不填
Path to key jenkins用户 SSH 私钥key的路径
Key jenkins用户的ssh 私钥的内容
3、设置 SSH servers,
添加完上面三项后,接下来有个 SSH servers
name:ssh连接的名称,可以随意取,有区分度就可以
Host Name : 远程服务器的域名/IP, 建议是IP
Username: 用户名,
Remote Directoey: 远程目录(将来要部署代码到哪个目录,就写哪个目录,一般是www或者自定义的workspace目录都可以) ,我这里是测试地址,随便写的
Use password authentication, or use a different key 这项勾上,使用密码或者key登录,二选一,
Passphrase / Password 远程服务器密码,我采用密码登录的方式,选用key的话,应该是远程服务器你所选择的用户下的ssh key
然后保存,上面算是一个通用设置,关于某台远程服务器。
4、修改构建任务,向远程服务器部署代码
下面可以新建一个jenkins的构建任务或者编辑之前的构建任务,找到构建,Send files or execute commands over SSH(构建环境和构建后操作选项中都有类似的设置)
这里脚本文件facility.sh内容如下,仅重启服务器,请根据需要自己编辑
#!/bin/sh -l service nginx restart
第三步是该远程服务器的全局配置,这里就是该远程服务器根据不同的构建任务细分的配置
解释一下上面字段的意思 ,
Name 之前第3步时,添加的SSH servers, 下拉框,自己选择需要的远程服务器,
Transfer Set Source Files : 要传输的源文件,相对路径,即该构建任务下你需要传输到远程服务器的文件。比如,我本次构建的项目所在目录/var/lib/jenkins/workspace/facility.klagri.com.cn/,
如果你需要 传输该目录下的所有文件,直接填 **/*, 如果只传单个文件 直接填写文件名(/var/lib/jenkins/workspace/facility.klagri.com.cn/为本选项的根目录)
Remove prefix :需要移除的前缀,针对 Transfer Set Source Files, 如果上一项中无用的目录层级比较多,可以在这里去掉(比如上一项填dev/v1.8.1/*, 本选项可以去掉dev/v1.8.1/ 无用的目录)
Remote Directory : 远程目录,相对路径,要部署的具体的文件夹名称,这里我与jenkins中的目录保持一致 facility.klagri.com.cn,目录的前缀已经在步骤3中的Remote Directoey设置过了,路径为/usr/local/src/test0513/,
此时这个Remote Directory 将会拼接在/usr/local/src/test0513/后面形成/usr/local/src/test0513/facility.klagri.com.cn这个目录。(前面说过,一般是/www或者自定义的workspace目录都可以,我这里/usr/local/src/test0513/是测试地址,随便写的)
Exec commands:在远程服务器执行命令,一般在这里可以给权限,执行部署脚本,部署脚本中一般会做很多工作,而不仅仅是重启服务器,比如备份,配置文件的设置,日志,等等
5、保存,立即构建
查看是否成功部署,如成功构建,但远程服务器并没有任何文件,请检查第4步的路径,可以上传单个文件,一直使用最简单的配置,再次尝试。
gitlab+jenkins自动化构建,参考:
https://www.cnblogs.com/lz0925/p/10858278.html