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”指定的用戶要有訪問此目錄的權限,插件將把文件傳送到此目錄下。
高級設置

重點說明!!!
重點說明!!!
重點說明!!!
一、確定 目標主機 拷貝路徑
上面配置中的 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


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