Jenkins系列文章
在生产环境中,往往我们的Jenkins和应用会部署在不同的服务器上,这时我们就需要将构建好的项目分发到应用服务器上,并执行脚本进行项目部署,我们可以通过ssh 和 scp命令实现这个功能,但是这种方式不够规范简洁,所以Jenkins中为我们提供了Publish Over SSH插件更好的实现我们的需求。
1、安装插件
在Jenkins控制台中,Manage Jenkins >>> Manage Plugins >>> 可选插件,搜索Publish Over SSH进行安装。
2、系统配置
安装完插件后,我们在Manage Jenkins >>> Configure System ,配置ssh服务器信息。
在这里我们可以使用两种方式进行远程服务器连接配置,第一种是ssh密钥对、第二种是使用密码的方式,这里对两种方式方式都进行说明。
1)ssh密钥(推荐)
(1)生成ssh密钥对
//在Jenkins服务器中使用root用户生成公钥和私钥
ssh-keygen -t rsa
//查看密钥信息
cd /root/.ssh
(2)配置公钥
将生成的公钥文件复制到应用服务器中/root/.ssh目录下,并更名为authorized_keys。
(3)配置服务器信息
在Jenkins控制台中,先指定ssh私钥位置,然后新增ssh server配置服务器ip、用户、端口等信息,然后点击test configuration 出现success表示配置成功。
2)密码方式
新增ssh server,然后配置服务器ip、用户等信息,点击高级,勾选Use password authentication, or use a different key,在Passphrase / Password填入对应用户的密码即可。
3、构建操作配置
以Freestyle项目为例,增加构建后操作配置,选择send build artifacts over ssh。
选择刚才配置的ssh server名称,填入基本信息,这里对Transfers中的几个属性进行说明
Transfer Set Source files:要发送的文件或文件夹的位置,这个地方的位置是相对路径(相对于当前项目),例如我当前的jenkisn项目路径是/var/lib/jenkins/workspace/fszl-web,我想发送dist文件夹到应用服务器上,那么直接填写 dist/ ,注意如果发送的是文件夹结尾一定要加/。
Remove prefix:去除前缀,会删除掉无用的目录,例如我在Transfer Set Source files中填写的内容为 test/dist/,那么推送到应用服务器上的项目路径也是test/dist/,如果我们不想要test目录,只想保留dist目录,那么remove prefix可以填写test/。
Remote directory:推送的文件或文件夹在应用服务器的哪个目录中,例如我这里的目录是/data/remoteDir,那么推送后的文件夹目录为/data/remoteDir/dist。
Exec command:为推送完成后的操作,通常我们会编写一个运行脚本将项目备份,然后替换。
配置完成后,应用保存即可。