Jenkins實戰應用–Jenkins構建中tag的應用


*系列匯總*

這是一個系列文章,大大小小到今天驚然發現竟然已經累計二十篇了,也就不得不做一個小匯總。回想當初寫第一篇文章的時候,就已經決心事無巨細,一應認真的走下來,回頭遮望,看着皇皇這么多文章,一股強烈的成就感就此油然而生,於是便有了這些匯總整理。在這個過程當中,好像也幫助過不少的人,這是讓我尤其開心的事情,同時也結識了一些志同道合的朋友,再沒有比這更讓人覺得愉悅的事情啦!也希望以后寫出更多類似的系列文章。

 

文章匯總地址如右:Jenkins入門教程。

如果相中哪個,點擊進去便是。希望正在讀這段話的你能夠在這個小系列中獲得自信以及喜悅!


1,緣起。

許多公司在做安卓的構建或者其他項目構建的同時,會有打tagGitlab的需求,這個需求的存在有其實在的價值意義,不僅僅讓每一次我們發布過的代碼有記錄存留,也能夠方便一些其他的功能(比如回滾),因此,今天就來說說這個事兒。

這個功能的實現依賴於Jenkins的git插件,不過一般都默認有安裝。

先准備一個測試項目,內容如下:

然后來到Jenkins處,做一些簡單的功能,能夠用於測試驗證即可。

執行shell處加一些簡單的操作:

  1. git pull origin master
  2. echo "**********************************************"
  3. cat README.md
  4. echo "**********************************************"

進入正式配置之前需要先安裝本文的主角Git Parameter插件,插件詳情,可以點我查看。

在構建后的操作中添加Git Publisher,然后如圖中所示配置:

在構建后操作當中選擇Git Publisher,然后如圖配置:

  • 配置一:定義tag名稱,release-$BUILD_NUMBER這里取用了一個Jenkins的環境變量,用於每次的tag自增問題。
  • 配置二:選中,以表示創建一個新的tag。
  • 配置三:要推送的項目。

接着我們構建一下看看效果:

看樣子tag已經打好並且推送到遠程服務器去了。

現在去git里邊看看是否有了。

圖中圈起來的地方可以看到,正好與我們構建此時對應的,創建了三個標簽。

現在我們模擬開發,更改一下項目文件內容,然后再構建一下看看情況。

來波操作:

  1. Administrator@liqilong MINGW64 ~/Desktop/gittest/eryajf (master)
  2. $ echo "第二次添加內容用於測試">> README.md
  3.  
  4. Administrator@liqilong MINGW64 ~/Desktop/gittest/eryajf (master)
  5. $ git commit -a -m "add two"
  6. warning: LF will be replaced by CRLF in README.md.
  7. The file will have its original line endings in your working directory.
  8. [master 822b2f3] add two
  9. 1 file changed,1 insertion(+),1 deletion(-)
  10.  
  11. Administrator@liqilong MINGW64 ~/Desktop/gittest/eryajf (master)
  12. $ git push
  13. Enumerating objects:5,done.
  14. Counting objects:100%(5/5),done.
  15. Delta compression using up to 4 threads.
  16. Compressing objects:100%(2/2),done.
  17. Writing objects:100%(3/3),307 bytes |76.00KiB/s,done.
  18. Total3(delta 0), reused 0(delta 0)
  19. To192.168.106.70:linux/eryajf.git
  20. 635b61c..822b2f3 master -> master

然后再去構建一下:

第四次構建,已經看到剛剛模擬開發所添加的內容了。

那么現在,就可以引出這個自動打tag的功能所帶來的另外一個大方便了,那就是方便回滾。

2,回滾功能。

我們可以在參數化構建當中進行參數的定義,依賴於Git版本控制的特性,當用戶選擇的是構建時,可以選擇對應的分支進行構建,當用戶選擇的是回滾是,那么可以選擇對應的tag進行回滾。事實上與分支的構建回滾是一個道理,不過這里直接選擇tag,也非常方便。

那么在驗證之前,我們需要對Jenkins進行一些小小的調整,通過添加剛剛表述的參數,以及執行的shell的配合,來完成這樣一個構建回滾各有分工的一個事情。

1,添加mode選項。

在參數化構建過程中先添加一個選項參數,從而讓構建以及回滾兩種情況存在。具體配置如圖:

2,再添加branch選項。

然后添加一個用於構建不同代碼分支的字符參數,這個是一個很常規的配置,就不做過多介紹,具體如圖:

3,添加Git Parameter選項。

然后添加一個用於回滾不同tag的選項,這里的tag是我們項目自動生成的,隨后會做一下總結,具體如圖:

4,修改shell內容。

修改一下shell的執行內容,做一個簡單判斷,腳本如下:

  1. cd $WORKSPACE
  2. if[ $mode =="deploy"];then
  3. git checkout $branch
  4. git pull
  5. echo "**********************************************"
  6. cat README.md
  7. echo "**********************************************"
  8. else
  9. git reset --hard $tagbak
  10. echo "**********************************************"
  11. cat README.md
  12. echo "**********************************************"
  13. fi

如果你對Jenkins熟悉的話,那么看到這個地方,估計就已經能夠知道,上邊的功能是什么了。

我們的開發進行日常開發,然后進行日常構建,一切就走分支這一條了,沒tag這邊啥事兒,只不過在每次構建的時候,都創建一個與構建歷史數一致的tag,為了不讓這個tag浪費,那么我們就廢物利用,通過這個自動生成的tag,實現了回滾的功能。

開發同學專注開發(branch),運維同學專注部署(deploy),一旦需要回滾(rollback),利用程序自動生成的tag(tag)來進行回滾咯。這,就是各有分工。

ok,最后是驗證的時刻了。

3,驗證。

驗證也非常簡單,通過三次構建即可驗證:

  • 構建一:初始內容,正常構建。
  • 構建二:添加內容,正常構建。
  • 構建三;直接回滾,驗證結果。

1,構建一。

為了更清晰的看實驗效果,我將剛剛的歷史清空,重打鼓另開張,新建一個項目進行測試。

現在准備出測試文件,內容如下:

進行常規構建:

2,構建二。

模擬開發,添加內容:

進行常規構建:

3,構建三。

直接通過tag進行回滾。

然后查看構建結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM