从CI / CD提交到存储库

时间:2018-02-10 07:00:55

标签: git github continuous-integration continuous-deployment

我最近配置了一个存储库,以便在我推送git tag匹配的“vX.YZ”时自动部署版本,但此过程并非完全自动。< / p>

具体来说,我必须在源代码中更新我的版本号(即碰撞“vX.Y.Z”),然后才能将其标记为要构建。

所以看来我有几个选择

  1. 在标记
  2. 之前继续手动生成内部版本号
  3. 让我的CI更新内部版本号(例如从标记中提取)然后将更改提交到master
  4. 在我看来,手动更新版本号是首选,因为在部署版本之前需要更多的工作量,并且版本与提交相关联,而不是在CI必须更新版本号的情况下落后于一个提交。 (另外,我不想在更新master

    之前等待构建完成部署

    我无法在网上找到强烈的意见,所以我很好奇:

      

    让我的CI构建服务器提交进入是不好的做法   我的存储库?

2 个答案:

答案 0 :(得分:0)

如果您可以使用vX.Y.Z. BuildVersion 版本控制方案,我会推荐以下内容。

  1. 根据Semantic Versioning政策手动管理 vX.Y.Z
  2. 如果您将新标签推送到GitHub,
  3. CI会发布一个包含 BuildVersion 的发布包。
    这将是增量计数 请注意,BuildVersion不在GitHub上管理。
  4. CI将包推送到GitHub Release。

答案 1 :(得分:0)

详细说明最初的问题,该问题比标记示例更为重要。有时,我们的CI会在生成工件之前修改回购的内容。举例来说,假设您已将配置文件与应用程序代码一起提交。您通常会将它们打包在一起(例如,在Docker映像中),然后将其作为构建过程的结果进行交付。如果您的CI通过更改某些值来修改这些文件,您将如何对待它们?

  • 在不重新运行整个构建的情况下将文件提交回相同的仓库,将使配置保持一致,但会使构建过程混乱,如果在此期间仓库被更改,则可能会引起问题。

  • 在最终工件中使用新配​​置非常容易,但是如果您回头看,该工件将无法反映回购的实际内容。

  • 将这些工件外部化为新的回购协议是一种选择,但打破了最佳实践,以最大限度地减少构建应用程序所需的依赖项数量。