gpt4 book ai didi

git - 基于微服务的应用程序发布自动化

转载 作者:行者123 更新时间:2023-12-03 21:38:47 26 4
gpt4 key购买 nike

我们正在开发由许多独立服务组成的应用程序。它比单个单体应用程序具有优势,但在我们发布时则不然。

我们每周进行一次发布周期。每个服务/组件都位于单独的 git 存储库中。 “发布” - 是我们投入使用的几个功能。通常只应更新几个组件。我们使用 saltstack 管理服务器。使用 git.latest 状态使发布盐脚本更新组件的版本。问题是指定正确的版本。

这是我想要自动化的手动工作的地方。要更新版本,我必须手动检查每个组件的存储库,根据 symantec 版本控制规则将开发分支 merge 到 master 和 tag 中。然后我用盐脚本编写新版本。我们有超过 10 个组件,所以这是一个相当无聊且容易出错的过程。

可能我们做错了,我很高兴听到任何如何做得更好的建议,谢谢。

最佳答案

首先,我建议遵循组件发布标签的约定。在最简单的情况下,这只是每个存储库上最新鲜的 git 标签。

然后,您可以创建一个映射脚本(例如,它称为 map_versions )枚举所有存储库的发布(最新)git 标签,并将该映射存储在某处以供 SaltStack 提取——用作 revision -s在 git.latest 状态。

相同的映射脚本也可以用于准备部署所有组件的 develop or master 分支, -- 所有 revision 值将切换为 developmaster

因此,您的工作流程将是:

// In the dev environment:

$ map_versions develop
$ salt * state.highstate

// Do the development, until all the stable features
// are merged back into master. Then, in production:

$ map_versions master
$ salt * state.highstate

// Make sure everything works fine; then, manually tag
// the new release versions for all the repos.

$ map_versions tags
$ salt * state.highstate

之后,所有在生产中发布的组件都被标记。

您还可以使用自动 git-tagging 脚本为所有可部署组件节省一些时间。该脚本将检查自上一个标签以来 master 中是否有任何更改,如果有,它将在 repo 上粘贴一个新的 git 标签;说,只是今天的 YYYY-MM-DD 。然后,这些标签将被 map_versions tags 拾取。

关于git - 基于微服务的应用程序发布自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30449278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com