C# Restful版本控制-如何在版本控制中设置版本以及如何部署?

C# Restful版本控制-如何在版本控制中设置版本以及如何部署?,c#,git,rest,jenkins,versioning,C#,Git,Rest,Jenkins,Versioning,如果我要在.NET中创建一个版本化的RESTful API(这与我版本化的方式无关,但为了便于讨论,让我们假设我正在使用API/v1/users)——我感兴趣的是人们在版本控制和代码方面如何处理这个问题。在我的情况下,它是一个私有API,但是它将被iOS应用程序使用,所以我不能保证所有客户端都会同时升级,所以我必须让旧API运行一段时间 假设我决定在用户返回的数据中实现一个突破性的更改,那么我创建了一个v2的api-api/v2/Users。我是否在GIT中进行这些更改,例如,为V2创建一个新分

如果我要在.NET中创建一个版本化的RESTful API(这与我版本化的方式无关,但为了便于讨论,让我们假设我正在使用API/v1/users)——我感兴趣的是人们在版本控制和代码方面如何处理这个问题。在我的情况下,它是一个私有API,但是它将被iOS应用程序使用,所以我不能保证所有客户端都会同时升级,所以我必须让旧API运行一段时间

假设我决定在用户返回的数据中实现一个突破性的更改,那么我创建了一个v2的api-api/v2/Users。我是否在GIT中进行这些更改,例如,为V2创建一个新分支,然后在工作副本上进行这些更改,然后分别构建每个分支并将每个分支项目部署到V2文件夹

比如:

Git分支:

MASTER ====v1========================v2==========================
            \               \          \
             \               \         BRANCH V2 =================
              BRANCH V1 ===========================================
                                            \                     /
                                             BRANCH V1 Bug Fix ===
显然,这带来了一种开销,即在创建Jenkins时必须将每个分支添加到Jenkins,然后在AWS上更新部署过程,以便在正确的位置安装相关的WebDeploy包。在这种情况下,MASTER也不是持续可交付的,它将是Dev,持续可交付的版本将是分支

或者人们只是使用不同版本的项目,例如v1/Users.cs v2/Users.cs,使用不同的名称空间,然后处理路由到的代码

后者处理起来要简单得多,因为在任何一点上只有一个项目要部署到前端。然而,我觉得它很混乱,并且超出了代码版本控制的核心价值

对于REST版本控制,我已经看到了很多关于URL命名与标题命名等的讨论,但是对于人们如何在代码库中实现版本控制以及版本控制,什么都没有


谢谢各位

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

  • Fork v1并为v2创建一个单独的项目。在这种情况下,您可以复制粘贴错误修复,或者可以通过拉请求共享修复
  • 为v1和v2创建单独的发布分支,这样您就可以将错误修复合并到这两个版本中

您检查过了吗?也许这可以给你不同的想法来解决你的问题。我个人不喜欢从分支机构交付产品,但相反,让Jenkins为任何非大师级分支机构构建产品,并推动产品的生产。希望这能有所帮助。感谢Lovato的评论,这很有帮助:)我唯一的问题是,Jenkins怎么知道它是哪个版本以及它要去哪里-如果我发布v3,但只在主干上,詹金斯不知道它应该在/v3/下——如果我在一个分支下这样做,至少我可以告诉詹金斯每个分支的含义。我不知道:/也许你可以尝试给版本控制赋予意义,比如1.2.3.4。Twitter就是这样做的,它启发了我。Twitter API是1.1。时期但在内部,它可能是1.1.244,这意味着自发布以来它的修订版244(也可以使用jenkins的build_版本)。然后,您可以在预构建步骤中在Jenkins上解析产品版本。如果您使用gitlab/github和WebHooks,它会发送一个有效负载,其中包含推送内容的所有详细信息,这样您就可以签出所需的分支,执行所需操作,构建和部署。也就是说,您可以更改分支,获取当前版本,增加最后一位数,提交回(注意不要再次触发jenkins)并正确地部署它。如果你看一下这篇文章也会很好:
MASTER ====v1========================v2==========================
            \               \          \
             \               \         BRANCH V2 =================
              BRANCH V1 ===========================================
                                            \                     /
                                             BRANCH V1 Bug Fix ===