Jenkins一个任务中处理多个git仓库的解决

Posted Edison韩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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任务中支持多个库的问题就完美解决了。。。写在最后,脑洞大开一下:针对后端微服务,这个插件是支持同时构建多个微服务模块的

  

以上是关于Jenkins一个任务中处理多个git仓库的解决的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins+git+webhook自动触发部署和测试任务

jenkins git公有仓库与私有仓库发布代码

持续集成高级篇之Jenkins Pipeline git拉取

Jenkins:一个项目的多个Git存储库

持续集成 - 基于gitee的jenkins配置(从gitee拉取代码并运行)

持续集成 - 基于gitee的jenkins配置(从gitee拉取代码并运行)