一、Jenkins的優點
1、傳統網站部署流程
一般網站部署的流程 這邊是完整流程而不是簡化的流程
需求分析—原型設計—開發程式碼—內網部署-提交測試—確認上線—備份資料—外網更新-最終測試
,如果發現外網部署的程式碼有異常,需要及時回滾,一般是運維來做。
1、功能測試 2、上線的時間 3、 jenkins 4、運維 5、功能測試
2、Jenkins部署流程
我們可以通過jenkins工具平臺實現全自動部署+測試,是一個可擴充套件的持續整合引擎,是一個開源軟體專案,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。Jenkins非常易於安裝和配置,簡單易用。
簡單來說方便如下人員:
- 開發人員:寫好程式碼,不需要自己進行原始碼編譯、打包等工作,直接將程式碼分支存放在SVN、GIT倉庫即可。 war 原始碼多 自動把程式碼放到伺服器上面
- 運維人員:減輕人工干預的錯誤率,ansible 一鍵完成了 同時解放運維人員繁雜的上傳程式碼、手動備份、更新
- 測試人員:可以通過jenkins進行簡單的程式碼及網站測試
3、持續整合的意義 增加工作效率
- 持續整合中的任何一個環節都是自動完成的,無需太多的人工干預,有利於減少重複過程以節省時間、費用和工作量
- 持續整合保障了每個時間點上團隊成員提交的程式碼是能成功整合的。換言之,任何時間點都能第一時間發現軟體的整合問題,使任意時間釋出可部署的軟體成為了可能
- 持續整合還能利於軟體本身的發展趨勢,這點在需求不明確或是頻繁性變更的情景中尤其重要,持續整合的質量能幫助團隊進行有效決策,同時建立團隊對開發產品的信心
4、持續整合的元件
- 一個自動構建過程,包括自動編譯、分發、部署和測試
- 一個程式碼儲存庫,即需要版本控制軟體來保障程式碼的可維護性,同時作為構建過程的素材庫,例如SVN、GIT程式碼庫
- 一個jenkins持續整合伺服器就是一個配置簡單和使用方便的持續整合伺服器
二.部署專案
1.建立Jenkins專案
登入Jenkins,點選新建專案
2.丟棄舊的構建 (保留7天,最大構建的最大數100)
3.碼雲獲取HTTP地址 http://172.16.1.161/auto_test/byxf_qa.git(可以通過git對應的地址)
4.Jenkins中配置碼雲中的地址,並新增登入名密碼
三.Jenkins指令碼
1.登入部署專案伺服器
2.執行指令碼
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
- command>out.file是將command的輸出重定向到out.file檔案,即輸出內容不列印到螢幕上,而是輸出到out.file檔案中。
- 2>&1 是將標準出錯重定向到標準輸出,這裡的標準輸出已經重定向到了out.file檔案,即將標準出錯也輸出到out.file檔案中。最後一個&, 是讓該命令在後臺執行。
- 試想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 "完成"