接口自動化平臺搭建(四),自動化項目Jenkins持續集成

1、Jenkins的優勢

一、傳統網站部署流程

  通常網站部署的流程 這邊是完整流程而不是簡化的流程 
需求分析—原型設計—開發代碼—內網部署-提交測試—確認上線—備份數據—外網更新-最終測試 
,若是發現外網部署的代碼有異常,須要及時回滾,通常是運維來作。git

一、功能測試 二、上線的時間 三、 jenkins 四、運維 五、功能測試shell

二、Jenkins部署流程

  咱們能夠經過jenkins工具平臺實現全自動部署+測試,是一個可擴展的持續集成引擎,是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。Jenkins很是易於安裝和配置,簡單易用。 
簡單來講方便以下人員:api

  1. 開發人員:寫好代碼,不須要本身進行源碼編譯、打包等工做,直接將代碼分支存放在SVN、GIT倉庫便可。 war 源碼多 自動把代碼放到服務器上面 
  2. 運維人員:減輕人工干預的錯誤率,ansible 一鍵完成了 同時解放運維人員繁雜的上傳代碼、手動備份、更新
  3. 測試人員:能夠經過jenkins進行簡單的代碼及網站測試

三、持續集成的意義 增長工做效率

  1. 持續集成中的任何一個環節都是自動完成的,無需太多的人工干預,有利於減小重複過程以節省時間、費用和工做量 
  2. 持續集成保障了每一個時間點上團隊成員提交的代碼是能成功集成的。換言之,任什麼時候間點都能第一時間發現軟件的集成問題,使任意時間發佈可部署的軟件成爲了可能 
  3. 持續集成還能利於軟件自己的發展趨勢,這點在需求不明確或是頻繁性變動的情景中尤爲重要,持續集成的質量能幫助團隊進行有效決策,同時創建團隊對開發產品的信心 

四、持續集成的組件

    1. 一個自動構建過程,包括自動編譯、分發、部署和測試
    2. 一個代碼存儲庫,即須要版本控制軟件來保障代碼的可維護性,同時做爲構建過程的素材庫,例如SVN、GIT代碼庫
    3. 一個jenkins持續集成服務器就是一個配置簡單和使用方便的持續集成服務器

二.部署項目

1.建立Jenkins項目服務器

  登陸Jenkins,點擊新建項目  運維

 

2.丟棄舊的構建 (保留7天,最大構建的最大數100)工具

 

 

 

3.碼雲獲取HTTP地址  http://172.16.1.161/auto_test/byxf_qa.git測試

 

 

4.Jenkins中配置碼雲中的地址,並添加登陸名密碼網站

 

 

 

三.Jenkins腳本

1.登陸部署項目服務器spa

 

2.執行腳本.net

 

 

 

 

3.腳本內容以下

pwd
cd /root/

mv -f /root/api_auto/static /root/static (移動static下面的全部內容,主要爲了保存上傳服務器的文件,圖片,excel等 )
rm -rf api_auto/* (刪除api_auto文件夾下全部內容)
a=`netstat -apn|grep 9000`  (執行shell命令並獲取結果)
echo $a
if [ -n "$a" ]; then  (判斷若是有返回值)
echo "端口不爲空 匹配端口殺掉進程"
port=`netstat -apn|grep 9000|awk '{ print $7 }'|awk -F/ '{ print $1 }' `  (獲取匹配到端口的進程id)
echo $port
kill -9 $port  (殺掉進程)


fi
pwd
echo "api_auto目錄已被清空"

 

4.將代碼拉倒項目目標服務器上

 

5.繼續登陸139服務器,啓動服務便可

 

當咱們在終端或控制檯工做時,可能不但願因爲運行一個做業而佔住了屏幕,由於可能還有更重要的事情要作,好比閱讀電子郵件。對於密集訪問磁盤的進程,咱們更但願它可以在天天的非負荷高峯時間段運行(例如凌晨)。爲了使這些進程可以在後臺運行,也就是說不在終端屏幕上運行,有幾種選擇方法可供使用。

  • &  
    當在前臺運行某個做業時,終端被該做業佔據;能夠在命令後面加上& 實現後臺運行。例如:sh test.sh & 
    適合在後臺運行的命令有f i n d、費時的排序及一些s h e l l腳本。在後臺運行做業時要小心:須要用戶交互的命令不要放在後臺執行,由於這樣你的機器就會在那裏傻等。不過,做業在後臺運行同樣會將結果輸出到屏幕上,干擾你的工做。若是放在後臺運行的做業會產生大量的輸出,最好使用下面的方法把它的輸出重定向到某個文件中:
  • 1

這樣,全部的標準輸出和錯誤輸出都將被重定向到一個叫作out.file 的文件中。

PS:當你成功地提交進程之後,就會顯示出一個進程號,能夠用它來監控該進程,或殺死它。(ps -ef | grep 進程號 或者 kill -9 進程號)

  • nohup 
    使用&命令後,做業被提交到後臺運行,當前控制檯沒有被佔用,可是一但把當前控制檯關掉(退出賬戶時),做業就會中止運行。nohup命令能夠在你退出賬戶以後繼續運行相應的進程。nohup就是不掛起的意思( no hang up)。該命令的通常形式爲: 
  • 1

若是使用nohup命令提交做業,那麼在缺省狀況下該做業的全部輸出都被重定向到一個名爲nohup.out的文件中,除非另外指定了輸出文件: 

  • 1

使用了nohup以後,不少人就這樣無論了,其實這樣有可能在當前帳戶非正常退出或者結束的時候,命令仍是本身結束了。因此在使用nohup命令後臺運行命令以後,須要使用exit正常退出當前帳戶,這樣才能保證命令一直在後臺運行。

  • ctrl + z 
    能夠將一個正在前臺執行的命令放到後臺,而且處於暫停狀態。

  • Ctrl+c 
    終止前臺命令。

  • jobs 
    查看當前有多少在後臺運行的命令。 
    jobs -l選項可顯示全部任務的PID,jobs的狀態能夠是running, stopped, Terminated。可是若是任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識。

  • 2>&1解析
  • 1
    1. command>out.file是將command的輸出重定向到out.file文件,即輸出內容不打印到屏幕上,而是輸出到out.file文件中。
    2. 2>&1 是將標準出錯重定向到標準輸出,這裏的標準輸出已經重定向到了out.file文件,即將標準出錯也輸出到out.file文件中。最後一個&, 是讓該命令在後臺執行。
    3. 試想2>1表明什麼,2與>結合表明錯誤重定向,而1則表明錯誤重定向到一個文件1,而不表明標準輸出;換成2>&1,&與1結合就表明標準輸出了,就變成錯誤重定向到標準輸出.

 

 

echo "在139服務了"
cd /root/api_auto/
rm -rf /root/api_auto/static  (刪除從git上拉下來的static文件夾)
cp -rf /root/static /root/api_auto/static (複製原來的static文件夾)
rm -rf /root/static (再把原來的刪除掉)
pwd
mkdir log (建立日誌文件夾)
chmod u+x *.sh
echo "完成"

 

參考博客地址:https://blog.csdn.net/a877415861/article/details/74544086

相關文章
相關標籤/搜索