工件的版本控制-CI / CD

时间:2019-03-25 08:50:39

标签: jenkins continuous-integration jenkins-pipeline artifactory continuous-deployment

Java代码的构建过程当前正在生成名称没有版本号的工件。

例如:java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.support.design.internal.BottomNavigationMenuView.getChildAt(int)' on a null object reference

我们目前正处于CI / CD管道的构建阶段

在CI / CD管道的构建阶段,通过maven构建生成的所有工件都没有后端服务的版本号

构建特定jar所需的从属工件仅存储在JFrog工件中


1) 在CI / CD管道的Build / QA / prod阶段是否需要对工件进行版本控制?

2) 是否需要将所有工件存储在JFrog工件中?因为只有serial-framework-SNAPSHOT.jar在Maven构建期间需要的从属工件才存储在JFrog

2 个答案:

答案 0 :(得分:1)

版本控制有何帮助:

  • 如果您想要还原较旧版本的应用程序(由于错误会严重降低生产性能),版本控制会有所帮助
  • 如果您正在api或ui级别上运行集成测试,则可以指定将哪个版本组合在一起(即通过合同测试:https://github.com/pact-foundation/pact_broker
  • 默认的清理过程可帮助您防止大量存储设备占用人工物品

是否存储所有工件?

我的个人经验:仅存储与其他工件相关的工件。例如,像Libs。如果您使用的是Docker容器,则应考虑对您在每次构建中生成的Docker映像进行版本控制。

答案 1 :(得分:1)

snukone在第一个答案中对版本进行了很好的解释。请注意以下几点,这可能对版本控制很有帮助

对于开发,请始终遵循版本“ versionNumber-SNAPSHOT”(大写字母) 例如:-1.0-快照

2)对于test / prod分支,请遵循“ versionNumber-RELEASE”版本 例如:-1.0 –发布

a)快照是可变的,因此用于开发目的。

b)版本是不可变的。提交后,我们将无法覆盖     人为的。因此,发行版用于更高的环境。

c)快照捕获正在进行的工作,并在开发过程中使用。快照工件具有版本号(例如“ 1.3.0”或“ 1.3”)和时间戳。例如,commons-lang 1.3.0的快照工件可能具有名称commons-lang-1.3.0-20090314.182342-1.jar

因此,如果您使用的是“ serial-framework-SNAPSHOT”,它将在您的人工产品中存储为“ serial-framework-version-timestamp.jar”。

类似地,如果您正在使用“ serial-framework-RELEASE”,它将在您的人工制品中存储为“ serial-framework-version.jar”。