背景:
現場的部署環境開放外網環境困難,只有一台機器能夠開發外網,應對該情況,所有的補丁文件需要直接在master機器上面生成,然后命令移動到其他的服務器上面去。
這里使用到了jenkins的Publish Over SSHcha插件。
Publish Over SSH插件使用介紹:
首先jenkins服務器需要安裝Publish Over SSH插件
在jenkins頁面“系統管理”-->“管理插件”-->"可選插件"中搜索Publish Over SSH插件選擇並安裝
安裝完成后,重啟下jenkins
注:也可以手動下載插件安裝,到官網下載插件,然后將下載的插件傳到服務器jenkins根目錄下的plugins目錄
即~/.jenkins/plugins目錄,重啟jenkins即可
官網插件下載地址https://wiki.jenkins-ci.org/display/JENKINS/Plugins
Publish Over SSH插件安裝完成后,在“系統設置”中會出現“Publish Over SSH”的配置標簽
ssh的配置可使用密鑰,也可以使用密碼,這里我們使用密鑰來配置,在配置之前先配置好jenkins服務器和應用服務器的密鑰認證
jenkins服務器上生成密鑰對,使用ssh-keygen -t rsa命令
在~/.ssh/下會有私鑰id_rsa和公鑰id_rsa.pub
應用服務器上創建~/.ssh文件夾和~/.ssh/authorized_keys文件,並將jenkins服務器的公鑰id_rsa.pub中的內容復制到authorized_keys文件
應用服務器上重啟ssh服務,service sshd restart
現在jenkins服務器可免密碼直接登陸應用服務器
上面兩個前提條件准備完畢之后,現在配置jenkins自動部署
在jenkins頁面“系統管理”-->"系統設置"中的Publish Over SSH標簽配置如下
Passphrase:密碼(key的密碼,如果你設置了)
Path to key:key文件(私鑰)的路徑
SSH Server Name:標識的名字(隨便你取什么)
Hostname:需要連接ssh的主機名或ip地址,此處填寫應用服務器IP(建議ip)
Username:用戶名
Remote Directory:遠程目錄(根據需要填寫文件傳到此目錄下)
“Use password authentication, or use a different key”:使用密碼驗證(這里使用了密鑰認證所以不開啟)
配置完成后可點擊“Test Configuration”測試到目標主機的連接,出現”success“則成功連接
如果有多台應用服務器,可以點擊”增加“,配置多個“SSH Servers”
點擊“保存”以保存配置
系統配置好ssh連接后,到項目配置中配置構建后發布的步驟
點擊(項目名“fin_test1”–>左側菜單的“配置”)來更改項目的配置
在配置最后找到“增加構建后操作步驟”,選擇"Send build artifacts over SSH"
然后在"Send build artifacts over SSH"模塊中配置如下
SSH Server Name:選個一個你在系統設置里配置的名字
Transfer Set Source files:需要上傳的文件(注意:相對於工作區的路徑。看后面的配置可以填寫多個,默認用,分隔)
Remove prefix:移除目錄(只能指定Transfer Set Source files中的目錄,這里移除了target目錄表示只將FinServer.war傳到目標服務器,否則會在目標服務器創建target目錄)
Remote directory:遠程目錄(根據你的需求填寫,這里沒有填寫默認會繼承系統配置,即/mnt)
Exec command:把你要執行的命令寫在里面(這里的命令是在目標服務器上執行的)
這里我們在應用服務器寫好了腳本,內容如下:
當war包傳到應用服務器,會執行此腳本自動部署
如需要傳輸多個war包,可點擊“Add Transfer Set”,增加一個傳輸模塊
如需要上傳到多個“SSH Server”,可點擊“Add Server”,增加一個服務器模塊(系統設置中有多個“SSH Servers”)
點擊”保存“,然后下次構建就會在構建完成后自動部署到應用服務器上
至此遠程自動部署就可實現