使用Jenkins,Stash和Artifactory为CI / CD构建管道

时间:2016-11-14 06:15:23

标签: jenkins continuous-integration artifactory continuous-deployment bitbucket-server

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

在我的公司,我们使用Stash。我的项目是一个多存储库项目(Client,Server,Common)。我们使用Gitflow作为分支模型。模块本身都是Java,通过Ant构建,ivy用于依赖管理。 到目前为止,我们“仅”使用我们的Jenkins实例来运行我们的测试并执行静态代码分析,因为我们的构建过程需要在专用环境中执行构建。 因此,我们有一个Jenkins实例设置来从开发构建。公共项目是服务器和客户端项目之间的共享依赖项。因此,我们的Jenkins项目设置为common→{server,client}之间的下游依赖关系。公共项目包含一个构建后任务,用于在公司内部工件(JFrogg)上发布构建公共项目。然后在执行客户端和服务器jenkins项目(ivy)期间使用它。

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

我们正在使用Stash Pull请求插件为jenkins在我们为它们生成拉取请求时为我们的功能分支运行构建。但是,由于我们设置了依赖项,我想实现以下目标:

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

2)如果我们只在公共项目中有一个功能分支 - 建立共同点 - 附带jira票号的神器共同发布 - 构建具有上述依赖性的下游开发分支(使用刚刚发布的具有特定分支的工件构建)

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

使用默认设置(已经可以使用)我们实际上现在为所有版本执行最后一个选项,这会在我们在客户端或Server项目使用的公共项目中引入新功能时导致问题,因为功能分支的构建将始终失败,直到我们合并功能分支并执行一次构建。

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

  • 在公共构建中,使用附加的分支信息在artifactory上发布构建。
  • 在公共构建上,触发客户端和服务器构建为下游依赖项
  • 在下游项目中尝试使用相同功能分支中的Dependency for common,如果这不可用,则回退到开发版本。

有没有人知道这类问题的解决方案,还是可以指导我如何处理这个问题?

非常感谢您的帮助,感谢抱歉。

最好,

塞巴斯蒂安

0 个答案:

没有答案