Restful Versioning - 如何在Version Control中进行版本以及如何部署?

时间:2014-09-04 10:55:20

标签: c# git rest jenkins versioning

如果我要在.NET中创建一个版本化的RESTful API(在我正在进行版本控制的方式上并不重要,但为了论证,我可以说我在做api / v1 / users) - 我我对人们如何在版本控制和代码方面处理这个问题感兴趣。在我的情况下,它是一个私有API,但它将由iOS应用程序使用,所以我不能保证所有客户端将同时升级,所以我必须保持旧API运行一段时间。

所以说我已决定对用户返回的数据实施重大更改,因此我创建了api-api / v2 / users的v2。我是否在GIT中进行了这些更改,例如,为V2创建一个新分支,然后在工作副本之上进行这些更改,然后单独构建每个分支并将每个分支项目部署到v2文件夹

像:

/branchV1/user.cs -> Built by Jenkins -> Deployed to V1/user
/branchV2/user.cs -> Built by Jenkins -> Deployed to V2/user

Git分支:

MASTER ====v1========================v2==========================
            \               \          \
             \               \         BRANCH V2 =================
              BRANCH V1 ===========================================
                                            \                     /
                                             BRANCH V1 Bug Fix ===

显然,这会带来开销,在创建Jenkins时必须将每个分支添加到Jenkins,然后更新AWS上的Deploy过程以在相应的位置安装相关的WebDeploy软件包。在这种情况下,MASTER也不会经常发货,它将是Dev,不断发布的版本将是分支机构

或者人们只是拥有不同版本的项目,例如v1 / Users.cs v2 / Users.cs - 具有不同的命名空间,然后处理将路由到的代码。

后者 更容易处理,因为只有一个项目可以在任何一点部署到前端。然而,对我来说,以及代码版本控制的核心价值感觉很麻烦。

我已经看过很多关于REST版本控制的URL命名与Header命名等的讨论,但没有关于人们如何在其代码库和版本控制中实现版本控制。

谢谢大家

1 个答案:

答案 0 :(得分:0)

在我看来,你有两个选择:

  • fork v1并为v2创建一个单独的项目。在这种情况下,您可以复制粘贴错误修复,或者可以通过拉取请求共享修复。
  • 为v1和v2创建单独的发布分支,因此您可以将错误修复合并到它们。