VSTS分支机构策略可以应用于GitHub吗?

时间:2018-07-08 22:33:28

标签: azure-devops azure-pipelines

VSTS分支策略似乎是天赐之选,可以保护主源代码不接受分支合并而无需分支通过单元测试和/或外观检查。

该企业了解如何将其应用于仅组织成员可访问的VSTS托管Git存储库。

我们正试图通过公开采购更多工作来推动该组织共享工作(这对我们来说将是第一个)。

我们认为VSTS不具备向公众开放的能力(例如,不确定我们是否准备好向公众开放看板。.至少直到我们在流程上变得更加成熟并且能够成为一个透明的组,而不会无意间意外共享部署密钥等)。

我们认为使用GitHub面向公众更合适(接受其他建议)。

但是我们如何使用公共Git存储库,同时使用分支策略保护其主分支免受错误影响呢?还是我们将使用两个存储库(一个在VSTS中,一个在GitHub中,并且用户将合并提交到GitHub,然后拉入GitHub的更改...但是我们如何确保它们也在分支中?)。

对于这个问题是否如此模糊,我感到很抱歉...我们只是不知道还没有足够的经验,并且由于该组织的风险状况,因此无法轻易地在第一时间获得经验地点。赶上22。因此含糊不清。

PS:可能还有其他选择,但是VSTS是给定的:关于使用ALM而不是集成多个服务,这是企业的战略决策。即使它缺少面向公众的元素。

2 个答案:

答案 0 :(得分:1)

您不能直接将VSTS git repo分支策略应用于GitHub repo。

并且由于VSTS git repo是私有仓库(而不是github公共仓库),因此VSTS git repo具有访问限制。

如果您希望任何人都可以阅读/贡献您的git repo,则应将git repo托管在github中。而且,如果您还想使用VSTS功能(分支策略,构建和发布等),则可以在github和VSTS中托管您的git repo ,并自动在github repo和VSTS git repo之间进行两个同步CI构建定义。详细步骤如下:

1。同步从github repo到VSTS git repo的更改

创建CI构建定义->选择GitHub存储库作为构建源->空进程->触发器选项卡->启用持续集成->包括所有带有*的分支。

enter image description here

enter image description here

然后使用以下脚本添加PowerShell任务:

if ( $(git remote) -contains 'vsts' )
{
  git remote rm vsts
  echo 'remove remote vsts'
}

git remote add vsts https://Personal%20Access%20Token:{PAT}@{account}.visualstudio.com/{project}/_git/{repo}
$branch="$(Build.SourceBranch)".replace("refs/heads/","")
git checkout $branch
git push vsts $branch

保存构建定义。

如果有新分支(例如featureA)被PR推送到github仓库中,以将featureA合并到master分支中,那么将触发构建以创建相应的{ {1}}在VSTS上分支。

2。在VSTS上创建相关的请求请求

基于github上的PR在VSTS上创建相关PR。如上例所示,您应该在VSTS中创建PR,以将featureA合并到featureA分支中。

3。通过PR验证来验证PR

如果要在合并拉取请求之前构建更改,可以按如下所示在master分支上添加验证策略,以便在创建或更新PR时立即触发验证构建。

enter image description here

4。合并PR并同步从VSTS git repo到github repo的更改

您需要创建另一个构建定义,以将VSTS git repo的更改自动同步到github repo:

创建CI构建定义->选择VSTS git repo作为源->空进程->触发器选项卡->启用连续集成->包括所有带有master的分支。

enter image description here

然后使用以下脚本添加PowerShell任务并保存构建定义:

*

现在,在合并VSTS git repo中的更改(例如将if ( $(git remote) -contains 'github' ) { git remote rm github echo 'remove remote github' } git remote add github https://username:password@github.com/username/reponame $branch="$(Build.SourceBranch)".replace("refs/heads/","") git checkout $branch git push github $branch 合并到featureA分支中)之后,将自动触发构建。并且master分支上的合并提交将同步到github repo。

BTW::如果您只想在创建或更新合并到master分支的请求时触发VSTS构建,则可以使用仅在github中托管git repo并启用请求验证

enter image description here

答案 1 :(得分:0)

简短的回答是:“不,您不能将分支策略应用于GitHub”,但这听起来您已经知道了。剩下两个选择:不要使用GitHub,或设置同步。

首先,“不要使用GitHub”选项: VSTS支持public projects,尽管您的工作项将可见。您可以通过从安全组中删除“读取”访问权限来控制这一点,但是我不记得我是否想知道公共项目是否具有“匿名”用户。

您也将无法接受来自外部来源的捐款。

第二,“在两者之间同步”选项: 设置一个在commit上运行的构建定义,并将分支推送到GitHub,反之亦然。 elsewhere非常清楚地解释了。

相关问题