【问题标题】:Visual Studio Team Services with GitHub repository synchronization (to and from) issueVisual Studio Team Services 与 GitHub 存储库同步(往返)问题
【发布时间】:2018-04-24 15:31:00
【问题描述】:

我有一个托管在 GitHub 中的开源存储库。 我已将其连接到 Visual Studio Team Services。

我只想通过 Team Services 工作(因此,在 Visual Studio 中连接到我的 Team Services 帐户和项目,而不是连接到 GitHub)。 GitHub 存储库应始终反映推送到 VSTS 的代码的最新版本。

问题是它只能部分起作用。

我设法将我的 GitHub 存储库连接到 VSTS 并导入代码。
可以看到初始提交到 GitHub 中的存储库。
可以查看 GitHub 中每个提交的构建状态(绿色、红色、橙色)。
当我在 GitHub 中提交代码时,我可以触发构建。
可以通过 Visual Studio 连接、提交和触发构建。

然而

无法在 VSTS 中看到在 GitHub 中完成的代码和提交
无法在 GitHub 中看到在 VSTS 中完成的代码和提交

所以,这些似乎是连接的,但不同步。

我在这里查看了这篇文章。它已经 2 岁了,所以也许事情已经改变了,因为它对我不起作用: How to synchronize VSTS and Github respositories when commits are made 还有这个Visual Studio Team Services - Sync w/ Github Repository

我不明白的是,当触发构建时,它会提取最新的源,我可以看到我的最后一次提交描述,但文件在 VSTS 中没有更新。

不管怎样,我然后执行 anwser 中描述的步骤,但它一直说“已经是最新的”。此同步构建成功,但没有任何变化 - 无论是在 VSTS 还是在 GitHub 中。

我需要做什么才能让它们同步?

【问题讨论】:

    标签: git visual-studio github azure-devops


    【解决方案1】:

    您只需要两个 CI 构建即可将 GitHub 存储库与 VSTS git 存储库同步。如果您的 GitHub repo 和 VSTS git repo 没有同步,请先同步,然后添加以下设置以供以后自动同步。

    我在 VSTS 中看不到在 GitHub 中完成的代码和提交

    要解决这个问题,你只需要一个GitHub repo 的CI 构建定义 似乎你已经有了),当新的更改被推送到GitHub repo 时,它可以自动触发。

    在 GitHub CI 构建定义中,添加 PowerShell 任务 以将新更改从 Github 存储库推送到 VSTS git 存储库。 PowerShell脚本如下:

    git checkout $(Build.SourceBranchName)
    git remote add vsts https://Personal%20Access%20Token:PAT@account.visualstudio.com/project/_git/repo
    git push vsts $(Build.SourceBranchName)
    

    注意:

    • 应使用 GitHub 存储库中的任何分支指定 CI 构建。所以你可以为分支过滤器指定*

    • 对于 PowerShell 任务,您应该取消选择 Fail on Standard Error 选项。

    我在 GitHub 中看不到在 VSTS 中完成的代码和提交

    要解决这个问题,您需要为 VSTS git repo 提供另一个 CI 构建定义,以便在将新的更改推送到 VSTS git repo 后,自动触发构建。

    您可以通过 PowerShell 任务将 VSTS git repo 中的更改推送到 GitHub repo:

    git checkout $(Build.SourceBranchName)
    git remote add github https://username:password@github.com/username/repo
    git push github $(Build.SourceBranchName)
    

    注意:您还应该使用 * 指定分支过滤器以匹配 VSTS git 存储库的所有分支。并且还需要取消选择 PowerShell 任务的 Fail on Standard Error 选项。

    【讨论】:

    • 非常感谢,这是一个很好的答案。还有一个问题——我是否正确地假设实际 CI 的正确过程是让 2 个同步构建中的每一个触发一个正确的“构建”来构建解决方案、运行测试和进行部署等?
    • 可以在同一个 CI 构建定义中构建解决方案、运行测试等,因为构建将由推送到远程仓库的新更改触发。您还可以在不同的 CI 构建定义中构建解决方案、运行测试等。这两种方式都有意义
    • 我想我需要在两个同步构建中复制“正确”构建,以便无论更改是由 github 还是 vsts 触发,它都会运行。所以,我宁愿让它们都触发相同的单独解决方案构建。再次感谢。
    【解决方案2】:

    据我从您提供的屏幕截图中可以看出,您没有对 VSTS 存储库进行任何操作。您正在同步的存储库来自 GitHub。您推送和拉取的存储库也是 GitHub。

    如果您不克隆或以其他方式与您的 VSTS 存储库进行交互,那么您没有看到任何事情发生也就不足为奇了。您希望您的构建使用 VSTS 存储库作为其源。然后,您在构建中运行的命令将 pull 来自 GitHub 的最新更改,并 push 来自 VSTS 的最新更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      相关资源
      最近更新 更多