VSTS分支策略似乎是天赐之选,可以保护主源代码不接受分支合并而无需分支通过单元测试和/或外观检查。
该企业了解如何将其应用于仅组织成员可访问的VSTS托管Git存储库。
我们正试图通过公开采购更多工作来推动该组织共享工作(这对我们来说将是第一个)。
我们认为VSTS不具备向公众开放的能力(例如,不确定我们是否准备好向公众开放看板。.至少直到我们在流程上变得更加成熟并且能够成为一个透明的组,而不会无意间意外共享部署密钥等)。
我们认为使用GitHub面向公众更合适(接受其他建议)。
但是我们如何使用公共Git存储库,同时使用分支策略保护其主分支免受错误影响呢?还是我们将使用两个存储库(一个在VSTS中,一个在GitHub中,并且用户将合并提交到GitHub,然后拉入GitHub的更改...但是我们如何确保它们也在分支中?)。>
对于这个问题是否如此模糊,我感到很抱歉...我们只是不知道还没有足够的经验,并且由于该组织的风险状况,因此无法轻易地在第一时间获得经验地点。赶上22。因此含糊不清。
PS:可能还有其他选择,但是VSTS是给定的:关于使用ALM而不是集成多个服务,这是企业的战略决策。即使它缺少面向公众的元素。
答案 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构建定义。详细步骤如下:
创建CI构建定义->选择GitHub存储库作为构建源->空进程->触发器选项卡->启用持续集成->包括所有带有*
的分支。
然后使用以下脚本添加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上分支。
基于github上的PR在VSTS上创建相关PR。如上例所示,您应该在VSTS中创建PR,以将featureA
合并到featureA
分支中。
如果要在合并拉取请求之前构建更改,可以按如下所示在master
分支上添加验证策略,以便在创建或更新PR时立即触发验证构建。
您需要创建另一个构建定义,以将VSTS git repo的更改自动同步到github repo:
创建CI构建定义->选择VSTS git repo作为源->空进程->触发器选项卡->启用连续集成->包括所有带有master
的分支。
然后使用以下脚本添加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并启用请求验证。
答案 1 :(得分:0)
简短的回答是:“不,您不能将分支策略应用于GitHub”,但这听起来您已经知道了。剩下两个选择:不要使用GitHub,或设置同步。
首先,“不要使用GitHub”选项: VSTS支持public projects,尽管您的工作项将可见。您可以通过从安全组中删除“读取”访问权限来控制这一点,但是我不记得我是否想知道公共项目是否具有“匿名”用户。
您也将无法接受来自外部来源的捐款。
第二,“在两者之间同步”选项: 设置一个在commit上运行的构建定义,并将分支推送到GitHub,反之亦然。 elsewhere非常清楚地解释了。