公司内网项目内网开发,但部署需要部署到外网,没法连git构建,只能拿打包好的文件进行更新。

初期就一台服务器手动部署,但随着需要部署的服务器多了起来,手动部署太麻烦了,改用jenkins更新,其实就是把文件传上去,然后调脚本部署,把这俩步整合了一下。

把使用jenkins过程中遇到的一些问题记录下。

1.往服务器传文件需要下载插件 Publish Over SSH

2.在Configure System中搜索ssh,添加SSH Servers配置服务器信息,注意Remote Directory一栏配置好根目录,比如/opt,方便后面传文件时指定存储目录,这里写的是绝对路径

3.创建item后,在构建一栏选择 Send files or execute commands over SSH,Transfers 里面几个参数的解释如下

Source files:填写要传的文件,支持*.zip这种格式,注意这里默认根目录是jenkins的工作空间根目录,比如我电脑工作目录是 D:\work\JenkinsWorkspace\workspace ,下边有对应item名称文件夹,根目录就是这个文件夹,我传的是一个单文件,比如test.zip,这栏直接填写test.zip就可以了。

Remove prefix:要去除的目录前缀,我没有在工作目录下新建其他层级,所以我没填写

Remote directory:服务器存储位置,这个地方填写的是根据前面设置的存储路径,要存储的目录,比如要存储在/opt/tmp/demo/目录下边,填写/tmp/demo/就可以了

Exec command:填写要执行的服务器脚本,这个地方写语句就可以了,比如我要执行/opt/tmp/demo1.sh,填写 bash /opt/tmp/demo1.sh

如果build期间出了问题,可以把ssh Server中的 Verbose output in console选项打开打印详细信息

4.添加构建确认框  

一般来说点击build直接就进行构建了,但怕误操作,想添加一个确认按钮,查了一下可以用 This project is parameterized 来实现,这个选项在General下边。

选择 Choice Parameter 下拉选择框

名称:

build_yes_or_no

 选项:

yes

no 

然后在构建里选择 Execute shell 填写下列代码就完成这个操作了,如果遇到没有sh文件的报错,记得把Configure System中的Shell路径配置好,我是配置的git中的sh.exe文件

if [ "${build_yes_or_no}" == "yes" ];
then
    echo yes
else
    echo no
    exit 1
fi