下面讲一下如何通过一台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

  

 

转载于:https://www.cnblogs.com/lz0925/p/10860460.html

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐