jenkins中通过Publish Over SSH将项目部署到远程机器上
Publish Over SSH插件使用
在使用Publish Over SSH之前,需要制作SSH私鑰。機器間做免密登錄配置。假設機器A,ip為192.168.AA.AAA,機器B: 192.168.BB.BBB,機器A能夠免密登錄機器B,機器B能夠免密登錄機器A,制作方式是:
進入A機器,執行:
通過下面的命令,表示可以通過機器192.168.AA.AAA免密登錄到機器192.168.BB.BBB
ssh-copy-id 192.168.BB.BBB
驗證方式是:在A機器上執行ssh 192.168.BB.BBB,然后執行ifconfig檢查當前的ip,若發現機器的ip已經變成了192.168.BB.BBB說明免密登錄設置成功。
進入B機器,執行:
cd ~ ssh-keygen -t rsa ssh-copy-id 192.168.AA.AAA驗證方式是:在B機器上執行ssh 192.168.AA.AAA,然后執行ifconfig檢查當前的ip,若發現機器的ip已經變成了192.168.BB.BBB說明免密登錄設置成功。
在系統配置中配置Publish Over SSH
進入Jenkins—>系統管理—>系統設置,配置Publish over SSH
參數說明:
對構建的項目中的SSH進行配置:
在執行前要配合Build–>Post Steps中的Execute shell配置,執行scp命令,將要拷貝的項目先遠程拷貝到遠程機器上。在Execute shell中的內容如下:
scp -r /root/.jenkins/workspace/youxuan_api_pre/qt360-web/target/youxuan_api root@192.168.BB.BBB:/usr/local/jenkinsTempFolder/ export BUILD_ID=DONTKILLME點擊構建的項目—>配置–>構建后操作,選擇Send build artifacts over SSH,進行如下配置(注意:下面的Exec command是遠程機器上執行的腳本):
腳本內容如下:
#!/bin/bash echo "==================start deploy project=========================" ps -aux | grep /usr/local/tomcat/ | grep -v grep > tomcat_info.txt sed 's/ / /g' tomcat_info.txt > tomcat_info1.txt sed 's/ / /g' tomcat_info1.txt > tomcat_info.txt sed 's/ / /g' tomcat_info.txt > tomcat_info1.txt cat tomcat_info1.txt | cut -d' ' -f 2 > tomcat_info.txtfor line in `cat tomcat_info.txt` dokill -9 $line donecd /usr/local/tomcat/webapps rm -rf youxuan_api* mv /usr/local/jenkinsTempFolder/youxuan_api /usr/local/tomcat/webapps/etc/init.d/tomcat start sync echo 3 > /proc/sys/vm/drop_caches echo "==================deploy project success========================="參數說明:
SSH Server Name:選個一個你在系統設置里配置的配置的名字Transfer Set Source files:需要上傳的文件(注意:相對于工作區的路徑。看后面的配置可以填寫多個,默認用,分隔)Remove prefix:移除目錄(只能指定Transfer Set Source files中的目錄)Remote directory:遠程目錄(根據你的需求填寫吧,因為我這兒是測試,所以偷懶沒有填寫。默認會繼承系統配置)Exec command:把你要執行的命令寫在里面(新版本的要求Transfer Set Source files和Exec command都要填寫,可以不了他。老版本的允許只填寫一個)高級:Exclude files:排除的文件(在你傳輸目錄的時候很有用,使用通配符,例如:**/*.log,**/*.tmp,.git/)Pattern separator:分隔符(配置Transfer Set Source files的分隔符。如果你這兒更改了,上面的內容也需要更改)No default excludes:禁止默認的排除規則(具體的自己看幫助)Make empty dirs:此選項會更改插件的默認行為。默認行為是匹配該文件是否存在,如果存在則創建目錄存放。選中此選項會直接創建一個目錄存放文件,即使是空目錄。(個人理解)Flatten files:只上傳文件,不創建目錄(除了遠程目錄)Remote directory is a date format:遠程目錄建立帶日期的文件夾(需要在Remote directory中配置日期格式),具體格式參考下表:Remote directory Directories created 'qa-approved/'yyyyMMddHHmmss qa-approved/20101107154555 'builds/'yyyy/MM/dd/'build-${BUILD_NUMBER}' builds/2010/11/07/build-456 (if the build was number 456) yyyy_MM/'build'-EEE-d-HHmmss 2010_11/build-Sun-7-154555 yyyy-MM-dd_HH-mm-ss 2010-11-07_15-45-55Exec timeout (ms):運行腳步的超時時間(毫秒)Exec in pty:模擬一個終端執行腳步Add Transfer Set:增加一個配置總結
以上是生活随笔為你收集整理的jenkins中通过Publish Over SSH将项目部署到远程机器上的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对女朋友的亲密称呼可爱(对女朋友的亲密称
- 下一篇: MySQL之长连接、短连接、连接池(转载