Jenkins实现文件上传到远程服务器(Publish Over SSH)

时间:2024-03-18 07:57:29

1.安装Publish Over SSH插件

系统管理→管理插件→可选插件→Artifact Uploaders→Publish Over SSH

 查看是否安装成

2.Publish over SSH的公共配置(系统配置)

 系统管理→系统配置→Publish Over SSH

公共配置说明:

Passphrase:密码(key的密码,如果你设置了)

Path to key:key文件(私钥)的路径

Key:将私钥复制到这个框中

Disable exec:禁止运行命令

 

私有配置说明:

SSH Server Name:标识的名字(随便你取什么,一般根服务器相关,下面要用到)

Hostname:需要连接ssh的主机名或ip地址(建议ip)

Username:用户名

Remote Directory:远程目录(就是上传的目录)

点击高级选项

私有配置的高级选项:

Use password authentication, or use a different key:可以替换公共配置(选中展开的就是公共配置的东西,这样做扩展性很好)

Passphrase:密码(可以替换公共配置的密码,但是这里必须选择Use password....复选框)

Port:端口(默认22)

Timeout (ms):超时时间(毫秒)默认即可

Disable exec:禁止运行命令

测试配置(Test Configuration)

3.项目配置

XX项目->配置->增加构建步骤

 基本配置说明:

Name:对应Publish Over SSH中的私有配置SSH Server Name

Transfer Set

Source files:需要上传的文件(相对于工作区的路径。可以填写多个,默认用,分隔, **/* 表示这个job的工作目录下所有的文件和目录。)

Remove prefix 该操作是针对上面的source files目录,会移除匹配的目录。通常留空

Remote directory:远程服务器目录(比如我这里的test,那么加上  公共配置(系统配置)->私有配置->Remote Directory   最后就是  /xcdata/test/)

高级

高级配置说明:

Exclude files:排除的文件(在你传输目录的时候很有用,使用通配符,例如:/.log,/.tmp,.Git/)

Pattern separator:分隔符(配置Transfer Set Source files的分隔符。如果你这儿更改了,上面的内容也需要更改)

No default excludes:禁止默认的排除规则(具体的自己看帮助)

Make empty dirs:此选项会更改插件的默认行为。默认行为是匹配该文件是否存在,如果存在则创建目录存放。选中此选项会直接创建一个目录存放文件,即使是空目录。(个人理解)

Flatten files:只上传文件,不创建目录(除了远程目录)

Remote directory is a date format:远程目录建立带日期的文件夹(需要在Remote directory中配置日期格式)

Exec timeout (ms):运行脚步的超时时间(毫秒)

Exec in pty:模拟一个终端执行脚步

Add Transfer Set:增加一个配置

坑说明:

1.Transfer Set Source files配置

发生的坑(SSH: Transferred 0 file(s)):

 原因

Transfer Set Source files 这里用的是相对工作区的路径,比如你这个jenkins的工作目录为/xcdata/docker-jenkins/jenkins/jenkins_home/workspace/tj,那这的目录只能是相对于这个目录下的(不要填绝对路径,要写相对路径),

比如如果是要全部到远程,就填 **/*,如果是单目录(如/xcdata/docker-jenkins/jenkins/jenkins_home/workspace/tj/test/app.jar),就填 /test/*

2.Exception when publishing, exception message错误

 一般这错误有2个原因:

1.磁盘空间满了,清理磁盘空间即可

df -h  (查看磁盘空间)

2.没有权限

Publish Over SSH配置中的用户密码没有创建文件的权限