VSTS / TFS Git分支策略和持续集成

时间:2017-06-07 19:40:54

标签: git continuous-integration azure-devops

我们公司一直在使用git分支策略,这使得长期运行的sprint工作分支看起来像这样:

function updateProfilePage(val, field) {
          $.ajaxSetup({
              headers: {
                  'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
              }
          });
          $.ajax({
              type: 'POST',
              url: '/userprofilepage',
              data: {
                  val: val,
                  field: field
              }
          }).done(function () {
                $('.alert').find('ul').append('<li>Profile page has been updated:' + data + '</li>');
          }).fail(function () {
                $('.alert').find('ul').append('<li>Profile page has not been updated:' + data + '</li>');
          }).always(function (e) {
                console.log(e);
          });
      }

通过当前的sprint,我们切换到为每个sprint创建一个新名称的新分支:

master
  \
   Sprint
     \
      Feature1
      Feature2

随着这种变化,出现了一些痛点:

  1. 每次创建新的Sprint ###分支时都必须设置策略(包括持续集成和拉取请求设置)。
  2. 构建定义具有通过通配符仍然可以正常工作的触发器(&#34; Sprint *&#34;),但构建的存储库源设置不支持通配符。
  3. 我已经通过了VSTS文档,但我觉得我已经错过了如何设置每个sprint的新分支(这与VSTS分支策略文档一致)。

    所以,问题是:

    我们的期望是触发构建的分支是构建的分支。这可能吗?

    每次从master创建新分支时,建议设置分支策略的建议是什么?我们是否应该期望每次都必须手动配置所有设置?

2 个答案:

答案 0 :(得分:3)

我们已发布guidance on Git branch strategy。指向TFVC的兄弟答案是不正确的。

我们不建议大多数团队长期运行的开发分支机构。相反,保持一个干净的主人并使用短期主题分支。然后,您不再需要继续创建和删除策略,构建定义等。

如果由于某种原因必须继续使用长寿分支,请考虑在分支的名称中使用斜杠,例如sprints/s100。我们已经有一个REST API(很快就是管理员用户界面)来设置prefix-matching basis上的策略,停留在/。因此,您可以在sprints/上设置分支政策,它会自动应用于sprints/s100sprints/s101等。

答案 1 :(得分:1)

建议的分支策略始终使用相同的分支,即使是新的sprint 。作为this article,您可以始终使用development分支进行不同的冲刺。

原因是,如果两个冲刺之间的代码差别很大,则可以使用分支策略。但缺点为:

  1. 每次创建新分支时设置分支策略。
  2. 随着时间的推移,会有大量的分支sprint*,很容易跟踪整个项目版本。
  3. 最后,针对您的问题(如果您仍需要当前的策略):

    1. 是的,您仍然可以在构建定义触发器选项卡中使用格式Sprint*,然后您新创建的分支Sprint ###也适用于CI构建。获取构建定义的源步骤不会影响您的CI构建,repo和branch仅选择手动构建队列。
    2. 您需要每次为新创建的分支手动设置分支策略。