azure-devops - VSTS 分支策略可以应用于 GitHub 吗?
问题描述
VSTS 分支策略似乎是天赐之物,可以保护主源代码在分支未通过单元测试和/或目视检查的情况下接受分支合并。
该企业了解如何将其应用于只有组织成员才能访问的 VSTS 托管 Git 存储库。
我们正试图通过开源更多工作来推动这个组织共享其工作(这对我们来说将是第一次)。
我们不认为 VSTS 有能力向公众开放(例如,不确定我们是否准备好向公众开放我们的看板......至少在我们在流程上更加成熟并且能够透明之前)作为一个组,不会意外共享部署密钥等)。
我们认为使用 GitHub 面向公众会更合适(接受其他建议)。
但是,我们如何使用公共 Git 存储库,同时使用分支策略保护其主分支免受错误影响?或者我们会使用两个存储库(一个在 VSTS 中,一个在 GitHub 中,用户将合并提交到 GitHub,我们拉入 GitHub 更改……但是我们如何确保它们也在 brnaches 上?)。
如果问题含糊不清,我很抱歉……我们只是不知道是否有足够的经验,而且由于该组织的风险状况,一开始就不能轻易前进以获得经验。第 22 条军规。因此含糊不清。
PS:可能还有其他可用选项,但 VSTS 是给定的:它是关于使用 ALM 而不是集成多个服务的企业战略决策。即使它缺少面向公众的元素。
解决方案
您不能直接将 VSTS git repo 分支策略应用于 GitHub 存储库。
由于 VSTS git repo 是私有 repo(而不是 github public repo),因此 VSTS git repo 有访问限制。
如果您希望任何人都可以阅读/贡献您的 git 存储库,您应该在 github 中托管您的 git 存储库。如果您还想使用 VSTS 功能(分支策略、构建和发布等),您可以在 github 和 VSTS 中托管您的 git repo,并通过两个 CI 构建定义自动在 github repo 和 VSTS git repo 之间同步。详细步骤如下:
1. 将 github repo 的更改同步到 VSTS git repo
创建 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
)推送到 github repo 与 PR 合并featureA
到master
分支中,则会触发构建featureA
在 VSTS 上创建相应的分支。
2.在VSTS上创建相关的拉取请求
根据 github 的 PR 在 VSTS 上创建相关 PR。如上例,您应该在 VSTS 中创建一个 PR 以合并featureA
到master
分支中。
3.通过PR验证验证PR
如果您想在合并拉取请求之前构建更改,您可以在master
分支上添加如下验证策略,以便在 PR 创建或更新时立即触发验证构建。
4. 合并 PR 并将 VSTS git repo 的更改同步到 github repo
您需要创建另一个构建定义以自动将 VSTS git repo 的更改同步到 github repo:
创建 CI 构建定义 -> 选择 VSTS git repo 作为源 -> 空进程 -> 触发器选项卡 -> 启用持续集成 -> 包含所有带有*
.
然后使用以下脚本添加 PowerShell 任务并保存构建定义:
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
现在在 VSTS git repo 中合并更改(例如合并featureA
到master
分支)后,将自动触发构建。分支上的合并提交master
将同步到 github repo。
顺便说一句:如果您只想在创建或更新拉取请求以合并到主分支时触发 VSTS 构建,您可以只使用在 github 中托管您的 git 存储库并在 VSTS 构建定义中启用拉取请求验证。
推荐阅读
- c++ - 对内部有 2 对的向量进行排序
- spring-boot - 使用 Spring Security OAuth 时 Spring Boot Reactive WebClient “serverWebExchange must be null”
- angular - ngx-translate (Angular) 中的地区或国家
- css - 可清除的输入覆盖标签填充
- c++ - c++基类未定义C2504
- oauth - 使用 Okta OAuth 请求获取“令牌无效”,为什么?
- python - 将 CNN 更改为使用 3D 卷积
- r - 在 lavaan 中运行 CFA - 显示潜在变量之间的相关性
- c++ - 从 QList 在屏幕上一张一张地绘制图像
在 Qt4.8 中的paintevent() 方法中 - java - 未触发此声纳规则