【问题标题】:How to sync repo in bitbucket to Visual studio team service?如何将 bitbucket 中的 repo 同步到 Visual Studio 团队服务?
【发布时间】:2018-11-25 05:36:04
【问题描述】:

我对 VSTS 平台非常陌生。在我的一个项目中,我正在尝试将 bitbucket 源代码控制集成到 VSTS。通过这种方式,我应该能够在 VSTS 帐户上看到在 bitbucket 上所做的更新。

我曾尝试在 VSTS 上创建构建,但这仅显示所选 bitbucket 存储库的提交历史记录。

有没有办法将 VSTS 上的所有 bitbucket 更改作为源代码控制进行管理?

【问题讨论】:

  • 你想如何“将bitbucket源代码控制集成到VSTS”?在将新更改推送到 bitbucket 存储库(对于任何分支)后,您是否希望将每个更改从 bitbucket 存储库同步到 VSTS git 存储库?
  • 正是,我想要的一样 :) 我们正在推进 VSTS。我们已经有我们的 bitbucket 项目并使用 JIRA 集成,我们不想破坏这种集成。因此,如果在 VSTS 中对任何存储库进行了任何更改,则应反映在 Bitbucket 中,反之亦然。

标签: azure-devops bitbucket azure-pipelines bitbucket-api azure-devops-rest-api


【解决方案1】:

要自动将 bitbucket repo 的更改同步到 VSTS git repo,您​​可以使用 VSTS 构建定义来实现。详细步骤如下:

1。使用 Bitbucket 存储库创建构建定义

创建 VSTS 构建定义时 -> 选择要同步的 Bitbucket 存储库 -> 创建。

2。启用持续集成

在构建定义中 -> 触发器选项卡 -> 启用持续集成 -> 包含所有带有* 的分支。

3。使用脚本添加 PowerShell 任务以将 bitbucket 存储库与 VSTS git 存储库同步

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

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

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

添加和配置PowerShell任务的详细步骤如下:

编辑您的构建定义->单击+为您的代理阶段添加任务->搜索powershell任务->单击添加->单击您添加的PowerShell任务->选择内联类型->然后添加您的powershell脚本在脚本选项中 -> 保存构建定义。

现在无论你的 bitbucket repo 中哪个分支更新,VSTS git repo 都会自动同步。


从 VSTS git repo 到 bitbucket repo 同步更改,您可以创建另一个 CI 构建来实现它。详细步骤如下:

1。使用 VSTS git repo 创建 CI 构建

2. 实现持续集成 3. 添加一个PowerShell任务,包含以下几个方面

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

git remote add bitbucket https://username:password@bitbucket.org/username/repo.git 
$branch="$(Build.SourceBranch)".replace("refs/heads/","")
git checkout $branch
git push bitbucket $branch -f

【讨论】:

  • 谢谢玛丽娜!这里有一个问题,这个powershell脚本将如何使用构建定义?您能否提供一些有关此脚本命令的作用的信息?它会触发我在 VSTS 帐户中的所有构建吗?
  • @DIGVJSS 我在 PowerShell 脚本中添加了注释。只有在将新更改推送到 bitbucket 存储库时才会触发构建。流程为:新的更改推送到bitbucket repo -> 构建触发-> 新的更改也会相应地更新到VSTS git repo。
  • 谢谢,知道了。那么,触发器是要运行 powershell 脚本的吗?我在哪里可以添加 powershell 脚本?
  • @TomChantler 是的,我确实设法解决了权限问题,但这只是因为我的朋友让我成为了他的仓库的管理员。抱歉,我不知道具体需要什么权限。
  • @oliver-clare 谢谢。我认为你的朋友必须这样做。 “存储库的管理员是唯一可以在该存储库上创建 webhook 的用户。” 根据confluence.atlassian.com/bitbucket/…
【解决方案2】:

将您的 Bitbucket 帐户连接到 VSTS 时,您正在设置构建触发器以在拉取请求或合并时运行自动构建。这就是 DevOps 世界中所谓的“持续集成”。

考虑阅读documentation,了解有关此主题的更多信息。

您将继续在 Bitbucket 上“管理”您的 Bitbucket 存储库。它是完全分开的。如果您想通过 VSTS 管理所有内容,则应将您的 Bitbucket 存储库导入您的 VSTS 帐户。

【讨论】:

  • 感谢您的回答布赖恩。我正在寻找自动化的东西。我们正在推进 VSTS。我们的项目已经在 Bitbucket 上运行并与 JIRA 集成。如果对 VSTS 进行了任何更改,则应反映在 Bitbucket 存储库中,反之亦然。
  • 您想查看 Git 镜像。 (这是 Git 的事情,而不是 VSTS 特定的事情。)虽然我会说围绕一致性有很多不稳定的边缘案例,这会使您团队的工作流程变得相当复杂。如果您想通过 repo A “管理”您的源代码并将其镜像到 repo B,我建议禁止推送到 repo B,以便它是 repo A 的只读视图。
  • @BrianCristante——这是怎么做到的?我的意思是,禁止 pushes 回购 B。但是git push --mirror <repo> 不也构成push,因此也会被禁止吗?更多信息this Q&A
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多