Jenkins一次任務構建中如何處理多個git倉庫


  最近在公司運維同學的推動下,前后端部署使用docker鏡像方式實施。前端在實施的時候遇到了問題:如何在一次jenkin任務構建使用兩個gitlab倉庫的東西(我們前端的代碼和配置存在於兩個不同的gitlab倉庫),我們需要在構建docker鏡像的時候,將構建代碼和配置全部放到鏡像中去,鏡像啟動的的時候再去根據不同的環境使用不同的配置(創建一個構建代碼中默認配置<dist文件中的dynamic.js>的軟鏈指向具體環境配置文件<config文件夾中的test.js , 比方說是測試環境>),然后在啟動鏡像中的nginx。所以我們需要在jenkins構建任務中執行一個腳本:將配置和前端構建文件全部復制到鏡像中去。

  jenkins有一個插件,叫 Multiple SCMs plugin,插件介紹:This plugin enables the selection of multiple source code management systems for a build. For example, it enables checking out the source code from one SCM while checking out legacy or third-party code from another.也就是說:這款插件支持多個版本控制管理源,你可以在一次構建中選擇多個倉庫進行構建(同時支持git和svn)。確保jenkins安裝該插件后,參考如下:

  1、在源碼管理中選擇 Multiple SCMs

 

 

   2、選擇你的代碼倉庫類型,進行添加,比如git

 

   3、填寫第2步添加的倉庫屬性

  

 

   注意第3步中的紅色框:圖中的code和config是2個文件夾,對應你的源代碼倉庫的個數,拿我們當前的情況來說,在當前jenkins任務的工作區間下,分別建立code和config文件夾,將第一個倉庫(前端代碼)拉取至code目錄下,將第二個倉庫(前端所有配置)拉取至config目錄下。如果沒有添加文件夾進行區分,會出現前一個倉庫將后一個倉庫覆蓋的問題(如果兩個倉庫的軟件是一樣的,比如都是git或者都是svn),造成我們構建的時候找不到文件。

  構建當前任務后,在當前任務的工作區間查看2個倉庫的內容是否拉取成功:

[szhq@dev01 workspace]$ ls -l
total 464
drwxrwxr-x 8 szhq szhq   4096 Apr  2 11:05 code
drwxrwxr-x 2 szhq szhq   4096 Apr  2 11:05 code@tmp
drwxrwxr-x 4 szhq szhq   4096 Apr  2 11:05 config
drwxrwxr-x 2 szhq szhq   4096 Apr  2 11:05 config@tmp

  查看code目錄:

[szhq@dev01 workspace]$ cd code && ls -l
total 444
drwxrwxr-x  2 szhq szhq   4096 Apr  2 11:05 build
drwxrwxr-x  2 szhq szhq   4096 Apr  2 11:05 config
-rw-rw-r--  1 szhq szhq   2326 Apr  2 11:05 index.dev.html
-rw-rw-r--  1 szhq szhq   2329 Apr  2 11:05 index.prod.html
-rw-rw-r--  1 szhq szhq   3213 Apr  2 11:05 package.json
-rw-rw-r--  1 szhq szhq   1120 Apr  2 11:05 README.md
drwxrwxr-x 11 szhq szhq   4096 Apr  2 11:05 src
drwxrwxr-x  5 szhq szhq   4096 Apr  2 11:05 static
drwxrwxr-x  4 szhq szhq   4096 Apr  2 11:05 test
-rw-rw-r--  1 szhq szhq 414823 Apr  2 11:05 yarn.lock

  查看config目錄:

[szhq@dev01 workspace]$ cd config && ls -l
total 8
-rw-rw-r-- 1 szhq szhq  670 Apr  2 11:05 README.md
drwxrwxr-x 2 szhq szhq 4096 Apr  2 11:05 src

  至此,一個jenkins任務中支持多個庫的問題就完美解決了。。。寫在最后,腦洞大開一下:針對后端微服務,這個插件是支持同時構建多個微服務模塊的

  


免責聲明!

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



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