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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM