jenkins SSH發布文件 Publish over SSH


jenkins 構建完成后需要一鍵發布,結構如下

A服務器 svn

B服務器 jenkins

C服務器 應用服務器

B從A拉取代碼后打包成war,然后向C服務器拷貝war包

這里解決的就是遠程拷貝問題

 

1.首先安裝jenkins   SSH插件

打開Jenkins的“系統管理>管理插件”,選擇“可選插件”,在輸入框中輸入“Publish over SSH”進行搜索,
如果搜索不到可以在“已安裝”里確認是否已經安裝過。在搜索結果中選中“Publish over SSH”,
點擊頁面的“直接安裝”按鈕,系統會自動安裝,此插件安裝后不需要重啟Jenkins。

如果插件安裝成功在“系統管理>系統設置”會出現相關配置項。

如果無法在線安裝,可以自己下載hpi文件,手動上傳

 

 

 

2.配置ssh

有兩種方法 密碼方法 和 密鑰免登錄

這里先寫密鑰免登錄的連接方法

2.1密鑰免登錄

插件安裝成功后使用前需要在“系統管理>系統設置”中進行配置,如圖:

 先配置  Jenkins SSH Key

參數說明
Passphrase:
SSH的密碼
使用用戶名/密碼登錄時為用戶名的密碼
使用私鑰登錄時為私鑰的密碼。
Path to key:
SSH私鑰的文件路徑
私鑰文件的路徑,可以是絕對路徑,也可以是相對$JENKINS_HOME的相對路徑
Key:私鑰
私鑰導出后的文本內容

如果“Key”和“Path to key”都設置,則“Key”的優先級較高,私鑰的密碼是“Passphrase”中設置的內容。

Disable exec:禁止在目標機上執行命令
勾選后將會忽略在Job配置中“Exec command”選項中設置的命令。
Jenkins的說明文檔中的“The Disable exec in the advanced settings for individual configurations will be ignored.”
沒有完全理解,從實際效果來看,只要“Disable exec”被勾選后,不管SSH Server中是否勾選“Disable exec”,Job中設置的命令都將補忽略。

 

再配置SSH Servers

參數說明
Name
SSH節點配置的名稱,在Job中使用Publish over SSH插件時,此名稱將出現在“SSH Server”中“Name”的下拉列表中,如下圖:

Hostname
通過SSH連接到的機器的主機名或IP
Username
SSH服務使用的用戶名,使用key進行連接時為key指定的用戶名
Remote Derictory
運程機器上真實存在的目錄,並且“Username”指定的用戶要有訪問此目錄的權限,插件將把文件傳送到此目錄下。

 

高級設置

高級設置里可以設置SSH端口、重試時間以及重新設置“全局設置”中的選項,由於做用相似,不再做重復說明,設置如下圖:

 

 

重點說明!!!

重點說明!!!

重點說明!!!

 

一、確定  目標主機  拷貝路徑

上面配置中的  Remote Derictory選項 指的是遠程主機的根目錄
它要和下面配置中的 Remote Derictory選項相配合

舉例:將文件war包 拷貝到遠程主機的  /usr/local  目錄下
可以有兩種寫法
1.  jenkins SSH  中的Remote Derictory  配置為 /usr/
    Jenkins 配置中Post-build Actions步驟  中的Remote Derictory 配置為  local

 或者

2.  jenkins SSH  中的Remote Derictory  配置為 /
    Jenkins 配置中Post-build Actions步驟  中的Remote Derictory 配置為 /usr/local

 

 二、確定  源主機  拷貝路徑

 Source相對路徑問題,不是.Jenkins/workspace,而是jenkins/workspace/[project]/

如何確定服務器上的相對路徑? jenkins主目錄+workspace+jenkins頁面創建的任務名(可以在workspace目錄下找到)

/var/lib/jenkins/workspace/1/abcd/a.war 示例: 如果 /var/lib/jenkins/workspace/1/abcd/a.war
的話 在下面source file 中只要填寫 1/abcd/a.war
**/war包 可以匹配,但是不精確

 

三、去前綴

如果不去前綴,上面的例子會在遠程目錄基礎上生成如下目錄 /usr/local/1/acbd/a.war

而我們想要的只有war包,所以通過remove prefix 選項可以把1/acbd/去掉,只生成bian.war包文件。

 

 

在Jenkins中配置Job

在Job設置中“增加構建步驟”里選擇“Send files or execute commands over SSH”,即可以Job中使用Publish over SSH插件,配置如下圖:

 

 

參數說明
Name:
“系統管理>系統設置”設置的SSH Sverver的名字列表。
Source files:
復制到運程機上的文件,相對workspace的路徑,也支持表達式,如上圖中的“**/*.war”。
Remove prefix: 文件復制時要過濾的目錄,如上圖中的target目錄。
Remote directory:
文件得到到遠程機上的目錄,此目錄是相對於“SSH Server”中的“Remote directory”的,如果不存在將會自動創建。 Exec command: 在這里可以填寫在運程機器上執行的腳本 

 注意:source files選項中  可以使用匹配

*.war      所有war包
* 只傳輸文件,文件夾不會傳輸
** 所有文件

 

 


免責聲明!

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



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