zoukankan      html  css  js  c++  java
  • jenkins+Publish Over SSH 提示:Transferred 0 file(s)

    之前公司用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

  • 相关阅读:
    BCD码、十六进制与十进制互转
    UNIX环境高级编程 使用方法
    Windows下NFS服务器SFU设置(可以共享linux系统)
    Linux学习之CentOS(一)--CentOS6.4环境搭建
    WORKGROUP无法访问,您可能没有权限使用网络资源,请与这台服务器的管理员联系以....
    嵌入式学习步骤
    asp.net core-6.Bind读取配置文件到C#实例中
    asp.net core-5.控制台读取json文件
    asp.net core-4.命令行配置
    asp.net core-3.应用程序部署到iis
  • 原文地址:https://www.cnblogs.com/leeke98/p/10796513.html
Copyright © 2011-2022 走看看