Continuous integration 如何允许快照repo中的任何版本

Continuous integration 如何允许快照repo中的任何版本,continuous-integration,nexus,Continuous Integration,Nexus,我们正在将功能分支构建到“功能”版本中。每个功能构建将生成相同的版本。由于这些都不是发布版,我想将这些人工制品部署到快照repo中,但Nexus不允许在快照repo中没有“快照”的版本 如何配置Nexus以允许回购中的任何版本?这实际上是一个Maven限制。尽管如此,您仍然可以使用类似feature_x-1.2.3-SNAPSHOT的版本 你到底想达到什么目的 通过在分支版本中添加“-SNAPSHOT”解决了此问题。 让詹金斯的Maven使用正确的版本是相当棘手的。我现在解决这个问题的方法是这样

我们正在将功能分支构建到“功能”版本中。每个功能构建将生成相同的版本。由于这些都不是发布版,我想将这些人工制品部署到快照repo中,但Nexus不允许在快照repo中没有“快照”的版本


如何配置Nexus以允许回购中的任何版本?

这实际上是一个Maven限制。尽管如此,您仍然可以使用类似feature_x-1.2.3-SNAPSHOT的版本


你到底想达到什么目的

通过在分支版本中添加“-SNAPSHOT”解决了此问题。 让詹金斯的Maven使用正确的版本是相当棘手的。我现在解决这个问题的方法是这样的。在构建作业中,配置Git以构建分支
origin/feature/*
。然后:

  • 在“build”部分中,首先要执行一个shell命令来构造一个文件“env.properties”,其中包含Maven build命令要使用的功能分支版本

    环境属性

    这使用Jenkins的GIT_分支环境属性。“##*/”是一个从参数值中删除所有内容的命令,但最后一个“/”字符后面的部分除外

  • 然后使用在上一步中创建的“env.properties”将环境变量“注入”到生成作业中。 将“env.properties”置于“属性文件路径”字段中

  • 使用Maven使用“调用顶级Maven目标”以正确的版本构建版本化pom:
    帮助:effective pom-Dbuild.number=${BRANCH\u VERSION}-Doutput=versioned pom.xml
    。这一步是必要的,因为否则jar人工制品中的pom不包含正确的版本,从而导致其他问题

  • 使用另一个“调用顶级Maven目标”步骤,使用在上一步骤中创建的pom版本执行实际构建和部署:
    -f versioned-pom.xml clean source:jar deploy


这就是所有的人。如果有人知道一个更简单的解决方案,请告诉我。

我想部署一个功能分支的构建,这样依赖的项目也可以构建和测试。在周末的一段时间里,我走了一段距离,重新思考了一下,我得出了相同的结论。是的,这是一个Maven的东西,最简单的解决方案就是在分支版本中附加“-SNAPSHOT”。