我的开发人员团队希望使用单个GIT仓库来存储多个微服务,因为只同步一个仓库更方便。
不幸的是,所有詹金斯的管道文章我发现总是在一个只有一个微服务的仓库的根部显示一个Jenkins文件。
如果我们考虑以下git存储库结构:
MyProject
¦-> Microservice1
¦ ¦-> src/main/java/...
¦ ¦-> src/main/docker/Dockerfile
¦
¦-> Microservice2 (etc.)
¦-> Microservice3 (etc.)
¦
...
¦-> Jenkinsfile
如何在jenkinsfile中检测哪些微服务项目已更新,以便仅在这些项目上执行de pipeline?
答案 0 :(得分:0)
所以我终于发现解决方法是使用几个jenkinsfile。然而,这尚未得到支持,但计划在Jenkins Blue Ocean的未来版本中发布:
https://issues.jenkins-ci.org/browse/JENKINS-43749
蓝海路线图:
答案 1 :(得分:0)
我不知道你是否以某种方式通过蓝海UI限制自己,但如果你通过传统的UI设置管道作业,运行的jenkinsfile就是一个参数。
实际上整个场景非常灵活,远远超出它可能首次出现的范围。我维护一个系统,其中有大约20个相互依赖的模块。我有几个不同的构建触发器方案,这取决于我是否要构建一个隔离或重建依赖模块的模块,以及作业是从gitlab(我们使用)触发还是手动。我不想在每个仓库中保留多个副本。
我发现我能做的就是拥有另一个包含Jenkins内容的repo - 它是一个共享库,包含几个有效的Jenkins文件和我通过load()使用的子脚本。 Jenkins文件加载相关的真实存储库并执行相应的构建作业。