这种整个工作流程通常效果最好

ruhul18 7月前 24


当您处理非常小的变化时。我的意思是,理想情况下,您想要创建一个分支,实施一个小更改,提出 PR,然后尽快将其合并回来。显然,这对于调整、错误修复和小事情来说效果很好,但对于主要功能工作来说,它效果不佳,因为该功能从开始到准备部署可能需要数周甚至数月的时间。您如何管理此类流程?

莱斯利:是的,这是一个很好的问题。因此,我们最近开始更多地使用功能标志。在详细讨论我们如何做到这一点之前,我先谈谈我们过去所做的事情。因此,在我们使用功能标志之前,我认为每个人都熟悉长期运行功能分支的想法。我们都讨厌 斯里兰卡电话号码表 他们,对吧?但我们会致力于较小的 PR。在代码审查之后,我们会将其中的每一个单独合并到这个运行时间更长的功能分支中。因此,您基本上只需将所有新功能集中在一个地方,您就可以拥有一个可以用来测试该新功能的部署预览。有时,这种模型需要跨其他团队进行协调部署。因此,当我们准备好说,“好吧,这个功能分支,我们已经准备好合并它并使其上线”,有时这意味着,“好吧,你必须确保后端已经部署了他们的更改,”因此我们在功能中所做的任何 API 工作都已准备就绪。如果我们的文档网站上有文档需要与该功能同时上线,您就必须同时协调并点击按钮。

莱斯利:这个模型......它对我们有用,但你是对的,它可能不是最顺利的。这实际上有点有趣,我们 Netlify 的联合创始人兼首席执行官 Matt Biilmann 实际上在去年 Jamstack Conf London 的舞台上使用此流程推出了我们的分析功能。因此,他使用我们的锁定部署功能基本上获取了分析新功能的部署预览并将其现场发布。所以,这很酷。

莱斯利:但是,就像你说的,你的信心有点少。一切仍然隐藏在这个 Pull Request 中。它变得有点笨拙。必须有人批准通常相当大的最终拉取请求。这有点让人难以承受。所以,现在我们主要使用功能标志。我们使用名为 LaunchDarkly 的服务,它基本上可以让我们用这些标志包装我们的新功能 UI,这样我们就可以不断合并代码,即使 UI 不是我们希望客户看到的东西。因此,您只需确保在生产环境中您的功能标志已关闭,我们就可以部署代码、合并它,没有人……假设您是普通用户,您将不会看到新的 UI。

德鲁:因此,功能标志基本上就像代码中的一个开关,表示“如果启用此功能,则使用此新代码,否则使用此旧代码。”

莱斯利:确切地。

德鲁:这是否意味



着您会得到一个混乱的代码库,所有这些分支都就位?你怎么处理那件事呢?

莱斯利:是的,我认为那是......任何使用功能标志的人可能都习惯了这种何时清理功能标志的战斗?你要把他们留在那里多久?我们已经在一项主要功能发布后大约两周了,我们有提醒。幸运的是,LaunchDarkly 最近实际上设置了一个可以通知 Slack 的功能。所以,你可以将它与 Slack 连接起来,它只会告诉你,“嘿,你的功能标志已经......你已经在生产环境中运行了两周了。是时候确保清理代码中的标志了。”

莱斯利:因此,我们确实尝试并很快清理了它,但在这段时间里,很高兴知道旗帜仍然在那里。即使您已经发布了该功能,这也意味着,只需单击一下,您就可以进入并将该标志切换回来,如果出现错误,或者弹出一些内容。因此,我们希望在该功能真正成熟、人们正在习惯它的同时,将它们保留一会儿,以确保不会出现任何重大问题。但随后我们确实尝试返回代码,这需要进行一些清理,因此这不是一个理想的过程,但通常删除标志不会花费很长时间,您只需删除几行代码即可。

德鲁:所以,我想实现功能标志的最简单方法可能就是……就像应用程序中的一个配置变量,上面写着“此功能打开或关闭”,但是你需要某种方法来确保它打开为合适的人服务,为合适的人关闭。


最新回复 (0)
返回
发新帖
Free Web Hosting