与Jenkins、Stash和Artifactory一起为CI/CD构建管道

与Jenkins、Stash和Artifactory一起为CI/CD构建管道,jenkins,continuous-integration,artifactory,continuous-deployment,bitbucket-server,Jenkins,Continuous Integration,Artifactory,Continuous Deployment,Bitbucket Server,在我的第一个问题中,我不确定我是否能提供足够的信息,但我会尝试: 在我的公司里,我们使用藏品。我的项目是一个多存储库项目(客户端、服务器、公共)。我们使用Gitflow作为分支模型。模块本身都是Java,通过Ant和ivy构建用于依赖关系管理。 到目前为止,我们仅使用Jenkins实例来运行测试和执行静态代码分析,因为我们的构建过程要求在专用环境中执行构建。 因此,我们有一个Jenkins实例设置要从develop构建。公共项目是服务器和客户端项目之间的共享依赖项。因此,我们的Jenkins项目

在我的第一个问题中,我不确定我是否能提供足够的信息,但我会尝试:

在我的公司里,我们使用藏品。我的项目是一个多存储库项目(客户端、服务器、公共)。我们使用Gitflow作为分支模型。模块本身都是Java,通过Ant和ivy构建用于依赖关系管理。 到目前为止,我们仅使用Jenkins实例来运行测试和执行静态代码分析,因为我们的构建过程要求在专用环境中执行构建。 因此,我们有一个Jenkins实例设置要从develop构建。公共项目是服务器和客户端项目之间的共享依赖项。因此,我们的Jenkins项目是在公共服务之间建立下游依赖关系的→ {服务器,客户端}。公共项目包含一个构建后任务,用于在我们公司的内部构件(JFROG)中发布构建公共项目。这将在客户端和服务器jenkins项目(ivy)的执行过程中使用

好的,我希望这是一个很好的概述。现在我的实际问题是:

我们目前正在使用stashpullrequest插件,让jenkins在生成拉请求时为我们的特性分支运行构建。但是,由于依赖关系的设置,我希望实现以下目标:

1) 如果我们有相同票证的功能分支(分支中使用Jira票证编号)和(客户端或服务器) -先建立公共关系 -在artifactory发布公共文件,并附上jira票号 -构建具有正确依赖关系的下游拉请求(使用刚刚发布的具有特定分支的构建构件)

2) 如果我们只在公共项目中有一个功能分支 -建立公共关系 -在artifactory发布公共文件,并附上jira票号 -使用上述依赖项构建下游开发分支(使用刚刚发布的具有特定分支的构建构件)

3) 如果我们仅在下游项目中有一个功能分支: -使用artifactory发布的公共项目在服务器/客户机上构建功能分支

对于默认设置(已经运行),我们实际上现在就为所有构建执行最后一个选项,一旦我们在客户机或服务器项目使用的公共项目中引入新功能,就会导致问题,因为功能分支的构建总是会失败,直到我们合并了功能分支并执行了一次构建

所以我想到了这样一个解决方案:

  • 在公共构建中,在artifactory发布构建,并附带分支信息
  • 在公共构建上,触发客户端和服务器构建作为下游依赖项
  • 在下游项目中,尝试使用来自同一功能分支的公共依赖项,如果不可用,则回退到开发版本
有没有人知道这类问题的解决方案,或者可以为我指出如何解决这类问题的方向


非常感谢你的帮助,很抱歉你的文字太长。获风滚草奖提名