引言
在深入探讨 Copado 的分支策略之前,了解一些关键概念至关重要。这些概念包括主分支、功能分支、推广分支等。本文将详细介绍这些概念,并通过实际案例来展示如何在实际工作中应用这些概念。
正文
1. 关键概念
1.1 Master/Main Branch(主分支)
主分支代表你的生产环境组织(Production Org)。它是所有其他分支的基础,确保最终发布的代码是稳定且经过充分测试的。
1.2 Feature Branch(功能分支)
功能分支是一个独立的分支,包含你的更改。例如,如果你正在开发一个名为“用户故事名称”的功能,你可以创建一个名为 feature/UserStoryName
的分支。
1.3 Promotion Branch(推广分支)
推广分支是从目标分支创建的一个隔离分支,用于驱动部署到下一个或前一个环境。它是一个中间分支,帮助管理不同环境之间的部署流程。例如,你可以创建一个名为 promotion/PromotionName-DeploymentName
的分支。
1.4 Org Branch(环境分支)
环境分支与你应用更改的环境相关联。例如,dev1
、dev2
、uat
、stage
和 master/main
都可以是环境分支。
1.5 Destination Branch(目标分支)
目标分支与你希望部署更改的环境相关联。例如,dev1
、dev2
、uat
、stage
和 master/main
都可以是目标分支。
在 Copado 模型中,每个 Salesforce 环境或其他云环境都与仓库中的一个分支相关联。例如,如果你的开发生命周期涉及生产、UAT 和 Dev 环境,你的仓库需要初始化三个分支:master/main
、uat
和 dev
。
2. 实际操作示例:发布流程
假设公司需要一种比传统模型更灵活的工作方式。他们希望找到一种可以在必要时快速从包中移除功能而不影响发布时间的流程。
2.1 传统模型的问题
传统模型的主要问题不是发布分支本身,而是发布分支是在业务利益相关者批准其内容之前创建的。因此,如果需要进行修正,团队成员必须手动在发布分支上执行这些操作。
2.2 Copado 的分支策略
Copado 重新设计了分支策略。Copado 的分支策略旨在让开发的功能尽可能长时间地保持隔离状态。这样可以轻松地从包中排除不需要的功能,只保留要发布的功能。
场景:A、B、C 功能已开发完成上了UAT,但临近发布时需移除C功能。
1. 使用 Promotion Branch 的流程
-
创建 promotion branch 时只合并 A 和 B:
git checkout -b promotion/uat_deploy_202507 git merge feature/A git merge feature/B
-
部署到 Prod 环境:
此时 promotion branch 中 只有 A 和 B 的代码,C 完全未被合并。 -
测试通过后部署到生产环境:
git checkout -b promotion/prod_deploy_202507 git merge feature/A git merge feature/B
-
优势:
- C 的代码从未进入 promotion branch,历史中无残留。
- 如果未来需要启用 C,只需单独创建新的 promotion branch(如
promotion/prod_deploy_C
)。
2. 使用 Release Branch 的流程
-
创建 release branch 并合并 A、B、C:
git checkout -b release/2025-07 git merge feature/A git merge feature/B git merge feature/C
-
移除 C 功能:
- 通过
git revert
或手动删除 C 的提交。 - 但 C 的提交历史仍存在于 release branch 中。
- 通过
-
部署到生产环境:
git checkout main git merge release/2025-07
-
问题:
- 即使 C 被移除,其历史仍会被带入 main 分支,可能导致未来合并冲突。
- 如果需要重新启用 C,必须重新合并或恢复提交。
2.3 多利益相关者开发流程
公司有多个利益相关者,每个利益相关者的功能都在不同的 Dev 环境中开发,然后移动到 UAT,在那里进行端到端测试,最后部署到生产环境。
以下展示了公司在 Copado 中的部署流程:
- Dev 环境开发:开发者在各自的 Dev 环境中开发功能。
- UAT 测试:开发完成后,功能被移动到 UAT 环境进行测试。
- 生产环境部署:经过测试的功能最终被部署到生产环境。
3. 使用 Copado 改进发布流程
通过采用 Copado 的分支策略,能够实现更加灵活和高效的发布流程。例如,如果某个功能在最后一刻需要移除,团队可以轻松地从发布包中排除该功能,而不会影响其他功能的发布时间。
此外,Copado 的分支策略还简化了多利益相关者的协作过程。每个利益相关者都可以在自己的环境中独立开发功能,然后在 UAT 环境中进行集成测试,确保最终部署到生产环境的代码是高质量和稳定的。
结论
通过本文的介绍,你应该对 Copado 的分支策略有了更深入的理解,并了解了如何利用这一策略改进他们的发布流程。这些知识将帮助你在实际工作中更好地管理代码变更,实现高效的协作和持续交付。无论你是初学者还是经验丰富的开发者,都可以从这些实践中受益,推动你的项目取得成功。