之前公司用jekins来进行自动化发布,现在公司因没有运维,所以自己学习、并搭建了一个jenkins的环境来进行项目自动化部署。

不料在最后连接ssh后部署时,一直提示Transferred 0 file(s),个人理解为:传输文件为0。

现附上自己的问题描述和解决方法:

安装插件

系统管理→管理插件→可选插件→Artifact Uploaders→Publish Over SSH   安装即可。

配置远程服务器

如图所示是jenkins上的ssh插件的公有配置部分,下面详细讲解下(其实比较简单,但是自己遇坑了也就记录一下)

Passphrase:如果自己在本地生成的ssh key没密码的话,这里不需要填写

Path to key:这里填写私钥的地址

key:这里填写私钥的内容(cat ~/.ssh/id_rsa查看)

Name:这里自己填写一个好记的名字

Hostname:主机ip或者域名

Username:登录机器的用户名

Remote Directory:远程的操作目录(这个需要自己的对应的服务器上创建好目录,并且登录名对应的用户需要有相应的权限)

******注意:这种利用私钥访问的办法需要事先将你的公钥放置到对应服务器的~/.ssh/authorized_keys中(一般 利用ssh-copy-id 命令免密登录)*****

以上登录方式不推荐,点击“Use password authentication, or use a different key”,利用私有配置登录才是我们推荐的

Passphrase / Password:这里填写username登录名对应的密码(其他的配置这里就不叙述了,看字段名应该就能明白)

一般填写密码就能登录了,点击Test configuration,出现Success表示连接成功;但有时候会报如下错:

Failed to connect or change directory
[java.net.ConnectException: Connection refused: connect]]

这是由于服务器上的sshd服务没有开启导致的,登录到服务器上执行命令

sudo service sshd start  //开启sshd服务

或者是如下错误

jenkins.plugins.publish_over.BapPublisherException: Failed to connect session for config [131]. Message [Auth fail]

这是由于账号密码不一致导致的,自行核查下账号密码.或者采用在私有配置中利用私钥来进行登录(这种方式参考上面的配置,在path to key 和key中填好相应的内容)

配置参数

在project中配置参数

保存后点击立即构建。在日志中出现如下的文字

SSH: EXEC: completed after 400 ms
SSH: Disconnecting configuration [8楼centos7-test] ...
SSH: Transferred 0 file(s)
Build step 'Send files or execute commands over SSH' changed build result to SUCCESS
Finished: SUCCESS

去远程服务器的目录下查看文件,也未能找到。
说明文件发送失败。

当然已经提示传输0个文件,在系统配置时点击test如果成功的话那就是目录的问题。

查询了一些文档明白了具体的意思

  • Source files **/* 表示sskzmz这个job的工作目录下所有的文件和目录。
  • Remove prefix 该操作是针对上面的source files目录,会移除匹配的目录。通常留空。
  • Remote directory 该操作是基于设定的服务器目录进行。这里我的服务器配置是的/www. 因此这里应该写sites/sskzmz即可。
  • Exec command 远程服务器执行的命令。例如可以输出 service nginx restart 或者/www/xx. sh 均可。
  • 高级
  • Exclude files:排除的文件(在你传输目录的时候很有用,使用通配符,例如:/.log,/.tmp,.Git/)
  • Pattern separator:分隔符(配置Transfer Set Source files的分隔符。如果你这儿更改了,上面的内容也需要更改)
  • No default excludes:禁止默认的排除规则(具体的自己看帮助)
  • Make empty dirs:此选项会更改插件的默认行为。默认行为是匹配该文件是否存在,如果存在则创建目录存放。选中此选项会直接创建一个目录存放文件,即使是空目录。(个人理解)
  • Remote directory is a date format:远程目录建立带日期的文件夹(需要在Remote directory中配置日期格式)
  • Flatten files:只上传文件,不创建目录(除了远程目录)
  • Exec timeout (ms):运行脚步的超时时间(毫秒)
  • Exec in pty:模拟一个终端执行脚步
  • Add Transfer Set:增加一个配置
 
注意:
 
  source files 要基于任务的目录进行。不支持绝对路径。
  jenkins_HOME没有配置的建议去手动配置一下,http://www.cnblogs.com/yangxia-test/p/4367999.html
 
  Remote directory 要基于你远程服务器的目录配置。
  远程服务器目录就是指你用sxhell等工具连接上服务器时的目录
 
 

在jenkins中publish over SSH plugin插件的文档中说到Source files只写目录名称会自动添加/**,功能是匹配目标目录下的所有文件;

不过我试了试好像不大管用,不知道是版本原因还什么。

参考链接:

https://www.jianshu.com/p/7c961fd5975c

jenkins+Publish Over SSH 提示:Transferred 0 file(s)的更多相关文章

  1. SSH: Transferred 0 file(s) 解决

    Jenkins搭建过程中,使用 Publish Over SSH 插件.发生 SSH: Transferred 0 file(s). 百度.google了几个小时,终于找到答案,特此记录. 配置如下: ...

  2. jenkins publish over ssh使用

    1.在需要远程的ubuntu服务器上生成密钥,指令:ssh-keygen   一路默认下去,会在~/.ssh目录下生成 id_rsa(私钥).id_rsa.pub(公钥) 2.复制公钥文件id_rsa ...

  3. Jenkins publish over ssh 路劲配置问题 记录

    每次通过jenkins 实现  maven项目编辑后 自动通过 ssh发布到 服务器的功能时,对配置的路劲有疑问,特整理出来 前提:服务器路径   /home/ubuntu/aps 目标: 构建后的j ...

  4. Jenkins publish over ssh 上传 文件夹 配置方式

    需要把编译后 目录下的 lib文件夹下的jar包都上传到服务器上 1.配置 2.完成截图 3.服务器截图 注意:  真实脚本 建议写 全路径 注意:多条命令时  添加 英文分号

  5. jenkins使用Publish Over SSH中遇到的问题

    在jenkins中想使用publish over ssh来在构建后发送XML或PNG文件至服务器,以便做其它的操作,安装完publish over ssh后,填加构建,发现在构建失败时,不传送文件,老 ...

  6. Jenkins通过Publish over SSH插件实现远程部署

    Jenkins通过Publish over SSH插件实现远程部署 步凑一.配置ssh免秘钥登录 部署详情地址:http://www.cnblogs.com/Dev0ps/p/8259099.html ...

  7. Jenkins系列-Jenkins通过Publish over SSH插件实现远程部署

    配置ssh免秘钥登录 安装Publish over SSH插件 插件使用官网:https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+Plug ...

  8. Jenkins的使用(三)-------Publish over SSH和Publish over FTP

    七.构建后操作 1.使用Publish over SSH 1.左边菜单栏    Manage Jenkins --->ManagePlugins--->可选插件,然后搜索 Publish ...

  9. docker:(5)利用docker -v 和 Publish over SSH插件实现war包自动部署到docker

    在 docker:(3)docker容器挂载宿主主机目录 中介绍了运行docker时的一个重要命令 -v sudo docker run -p : --name tomcat_xiao_volume ...

随机推荐

  1. oracle imp使用

    1. 获取帮助 imp help=y 2. 导入一个完整数据库 imp system/manager file=bible_db log=dible_db full=y ignore=y 3. 导入一 ...

  2. CodeForces 427A Police Recruits (水题)

    题意:给定 n 个数,有正数和-1, -1表示罪犯,正数表示招了几个警察,一个警察只能看一个罪犯,并且要按顺序,问你有多少罪犯逃脱. 析:很简单么,从开始扫到最后,把是正数就加上,是-1判断剩余警察大 ...

  3. Android-ContentProvider原理图

    ContentProvider的设计思想是模仿了Web里面的架构思想: Web服务器   对外暴露数据(提供被访问的地址Uri,并允许给客户端访问,也可以只让客户端访问某些行为) ContentPro ...

  4. [LeetCode 题解]: Insertion Sort List

    Sort a linked list using insertion sort. 题目要求:链表的插入排序,由于没有时间复杂度的要求,可以直接循环操作. /** * Definition for si ...

  5. C/C++文件输入输出流

        C++方式 C方式 头文件   fstream stdio.h open   file.open(const char *filename,const char *mode) FILE* fo ...

  6. 疑难杂症--已停止运行DBCC造成阻塞

    场景数据库因非法断电导致出现分配页上不一致,运行完DBCC CHECKDB后出现以下错误: 表错误: 表 't_pc_id' (ID 277576027).数据行在索引 'last_login_dat ...

  7. WebApi中跨域请求的解决方案和原理

    跨域请求仅发生在JavaScript发起Ajax请求时,浏览器对请求的限制,通常只允许访问同一个域中的资源,或者目标服务器明确的通知浏览器允许该域访问资源. 那么什么叫跨域的:主机地址或者ip地址或者 ...

  8. ES6——介绍

    什么是ES6? ECMAScript 6.0 (简称ES6)是继ECMAScript 5.1 之后 JavaScript 语言的下一代标准,发布在2015年6月.他的目标,是使得 JavaScript ...

  9. C语言程序设计

    从 大一下 开始写博客,记录自己的学习. 而作为一个强迫症(比如我)是不允许做事缺头少尾的. 想了想还是得大一所学的C语言也搬上来,虽然结构老师经常嘲讽 (也不算嘲讽,算是絮叨吧)我的C语言,但是我还 ...

  10. Delphi XE8中的DBExpress使用ODBC方式连接MySQL 5.6.24 X64!!!!

    Delphi:XE2.XE8 MySQL:5.6.24 X64 今天准备做一个使用数据库的REST程序,最开始使用XE2,后来使用XE8,但是我遇到一个让我头疼的问题,就是无法连接我要使用的数据库,这 ...