本次實驗介紹:
nginx:web網站
svn:代碼存儲倉庫
jenkins:自動化運維工具nginx
開發人員經過將代碼提交到svn上,運維人員經過配置jenkins自動發佈到nginx目錄上。web
實驗環境:
192.168.0.188 Jenkins
192.168.0.189 nginx
192.168.0.19 svn
Jenkins、nginx、svn環境都已經準備完成,這裏不進行再次搭建安全
步驟:
1.Jenkins安裝ssh插件,並配置遠程服務器
2.創建項目(job)配置Jenkins
3.將代碼上傳svn
4.用Jenkins發佈文件
5.查看測試結果服務器
1.Jenkins安裝ssh插件,並配置遠程服務器
在Jenkins系統管理——插件管理
選擇插件publish over ssh插件並安裝,已安裝則忽略運維
安裝完成後開始配置系統管理——系統配置ssh
翻到最後面,找到SSH Servers 選項而後新增
ide
測試是能夠鏈接保存便可svn
釋義:
SSH Server配置爲Publish Over SSH中運程機的配置,分「基本設置」和「高級設置」兩部分。「基本設置」主要是運程機IP、SSHusername、SSHport、鏈接超時時間等。「高級設置」和大部分「全局設置」中的選項相同。
Name:創建這臺機器的名稱
Hostname:遠程機器的地址,最好是ip地址
Username:用戶名
Remote Directory:遠程目錄
Use password authentication, or use a different key:使用密碼鏈接
高級設置
高級設置裏可以設置SSHport、重試時間以及又一次設置「全局設置」中的選項工具
全局配置:
每一項都可以被SSH Server的設置所覆蓋,這種設計有一個優勢。在server環境比較規範的狀況下,可以省去每一個SSH Server分別配置的繁瑣步驟。
參數說明
Passphrase:SSH的password
使用username/password登陸時爲username的password。使用私鑰登陸時爲私鑰的password。
Path to key:SSH私鑰的文件路徑
私鑰文件的路徑,可以是絕對路徑。也可以是相對$JENKINS_HOME的相對路徑
Key:私鑰
私鑰導出後的文本內容測試
擴展例子:若是不使用密碼而使用祕鑰遠程鏈接該怎麼作呢1.jenkins所在服務器生成公私鑰對2.將公鑰(idrsa.pub)傳到要遠程的機器上或者將公鑰內容輸入到遠程機器authorizedkeys文件中(/root/.ssh/authorizedkeys)chmod 600 /root/.ssh/authorizedkeys3.jenkins設置私鑰所在路徑文件,在輸入生成公私鑰的密碼便可(Passphrase/Password字段須要輸入公私鑰密碼)(Path to key字段輸入jenkins所在服務器的私鑰文件所在路徑)
假設「Key」和「Path to key」都設置,則「Key」的優先級較高,私鑰的password是「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中設置的命令都將補忽略。
2.創建job任務
點擊新建任務
輸入名稱,並選擇自由風格項目而後肯定
源碼管理選擇svn
其中
Repository URL:項目的svn地址
Credentials:憑證
點擊添加,添加相應用戶名便可
選擇構建後操做,選擇send build artifacts over SSH
參數說明:
Name
「系統管理>系統設置」設置的SSH Sverver的名字列表。
Source files
拷貝到運程機上的文件。相對workspace的路徑,也支持表達式,如上圖中的「*/.war」。
Remove prefix
文件複製時要過濾的文件夾,如上圖中的target文件夾。
Remote directory
文件獲得到遠程機上的文件夾,此文件夾是相對於「SSH Server」中的「Remote directory」的。假設不存在將會本身主動建立。
Exec command
在這裏可以填寫在運程機器上運行的腳本,如:應用部署腳本
這裏是直接將svn發佈文件拷到nginx發佈目錄上,也能夠將遠程目錄修改其餘的,而後運行命令拷貝到nginx上也可,這種方法比較安全
這是nginx發佈前
修改文件將文件傳到svn
點擊構建
查看日誌
刷新頁面,發佈成功