下面講一下如何通過一台jenkins服務器構建后將代碼分發到其他的遠程服務器,即jenkins自動部署代碼到多台服務器。
1、下載 pulish over ssh 插件
2、系統管理 -> 系統設置(全局設置和路徑), 拉到最下面 找到 Pulish over SSH, 進行設置ssh key
Passphrase jenkins用戶 SSH Key 的密碼,如果未設置,可以不填
Path to key jenkins用戶 SSH 私鑰key的路徑
Key jenkins用戶的ssh 私鑰的內容
3、設置 SSH servers,
添加完上面三項后,接下來有個 SSH servers
name:ssh連接的名稱,可以隨意取,有區分度就可以
Host Name : 遠程服務器的域名/IP, 建議是IP
Username: 用戶名,
Remote Directoey: 遠程目錄(將來要部署代碼到哪個目錄,就寫哪個目錄,一般是www或者自定義的workspace目錄都可以) ,我這里是測試地址,隨便寫的
Use password authentication, or use a different key 這項勾上,使用密碼或者key登錄,二選一,
Passphrase / Password 遠程服務器密碼,我采用密碼登錄的方式,選用key的話,應該是遠程服務器你所選擇的用戶下的ssh key
然后保存,上面算是一個通用設置,關於某台遠程服務器。
4、修改構建任務,向遠程服務器部署代碼
下面可以新建一個jenkins的構建任務或者編輯之前的構建任務,找到構建,Send files or execute commands over SSH(構建環境和構建后操作選項中都有類似的設置)
這里腳本文件facility.sh內容如下,僅重啟服務器,請根據需要自己編輯
#!/bin/sh -l service nginx restart
第三步是該遠程服務器的全局配置,這里就是該遠程服務器根據不同的構建任務細分的配置
解釋一下上面字段的意思 ,
Name 之前第3步時,添加的SSH servers, 下拉框,自己選擇需要的遠程服務器,
Transfer Set Source Files : 要傳輸的源文件,相對路徑,即該構建任務下你需要傳輸到遠程服務器的文件。比如,我本次構建的項目所在目錄/var/lib/jenkins/workspace/facility.klagri.com.cn/,
如果你需要 傳輸該目錄下的所有文件,直接填 **/*, 如果只傳單個文件 直接填寫文件名(/var/lib/jenkins/workspace/facility.klagri.com.cn/為本選項的根目錄)
Remove prefix :需要移除的前綴,針對 Transfer Set Source Files, 如果上一項中無用的目錄層級比較多,可以在這里去掉(比如上一項填dev/v1.8.1/*, 本選項可以去掉dev/v1.8.1/ 無用的目錄)
Remote Directory : 遠程目錄,相對路徑,要部署的具體的文件夾名稱,這里我與jenkins中的目錄保持一致 facility.klagri.com.cn,目錄的前綴已經在步驟3中的Remote Directoey設置過了,路徑為/usr/local/src/test0513/,
此時這個Remote Directory 將會拼接在/usr/local/src/test0513/后面形成/usr/local/src/test0513/facility.klagri.com.cn這個目錄。(前面說過,一般是/www或者自定義的workspace目錄都可以,我這里/usr/local/src/test0513/是測試地址,隨便寫的)
Exec commands:在遠程服務器執行命令,一般在這里可以給權限,執行部署腳本,部署腳本中一般會做很多工作,而不僅僅是重啟服務器,比如備份,配置文件的設置,日志,等等
5、保存,立即構建
查看是否成功部署,如成功構建,但遠程服務器並沒有任何文件,請檢查第4步的路徑,可以上傳單個文件,一直使用最簡單的配置,再次嘗試。
gitlab+jenkins自動化構建,參考:
https://www.cnblogs.com/lz0925/p/10858278.html