与GitHub持续集成

时间:2015-12-16 18:48:29

标签: asp.net-mvc git github msbuild github-api

目前我们使用TFS作为源代码控制。我们已经配置了与TFS的持续集成及其正常工作。但现在我们决定将我们的项目转移到GitHub。

它的ASP.NET MVC项目,我们已经有了Msbuild的proj文件来构建项目并创建输出。 现在 以某种方式 当有人将代码推送到远程存储库时,我们需要自动运行proj文件。我并不担心部署代码。

我看到GitHub有两个选项:

  • Webhooks:我想我们必须创建自己的服务,接受" POST"请求然后在我们自己的构建服务器上托管服务。该服务将负责将最新代码提取到构建服务器上的本地存储库并执行proj文件。

  • GitHub上提供的集成工具很少,但我不确定哪一个可以与MSBUILD一起使用。有关集成工具的任何建议,特别是对于ASP.NET MVC项目? https://github.com/integrations/feature/build

有关这两种方法的任何建议吗?

2 个答案:

答案 0 :(得分:2)

TFS Build

如果你正在使用TFS Build 2015,那只是couple of clicks的问题:

  1. 为您的构建服务器创建GitHub帐户
  2. 为此帐户生成个人访问令牌(并定义权限)
  3. 创建新的构建定义(使用GitHub选项)
  4. 如果您不打算使用TFS Build,但又想选择其他构建服务器,那么市场上有很多选择。

    云解决方案

    例如,您可以选择AppVeyor。这是一个云计算CI服务,它与GitHub开箱即用,可以轻松构建.NET解决方案。它使用WebHooks来触发构建过程。

    内部构建服务器

    假设您想拥有自己的CI服务器。作为.NET的解决方案,我可以推荐TeamCity,但您也可以使用Jenkins。两者都与GitHub集成,两者都可以构建.NET代码。

    我对TC更熟悉,所以我将解释如何配置它。

    TeamCity Pro is free for小团队。

    您可以找到分步示例here。它有点过时(文章写于2013年),但它仍然是一个不错的教程。

    1. 您需要构建服务器的帐户(与TFS Build相同)。
    2. 配置VCS root以使用您的GitHub存储库。
    3. 设置分支规范。大多数时候+:refs/heads/*都可以。
    4. 定义构建步骤。给它一个.sln文件的路径。
    5. 根据需要定义其他步骤(单元测试,发布包,通知)
    6. 设置构建触发器(TC可以轮询GitHub以进行更改,或者可以侦听WebHook)。当TC在防火墙后面时,第一个选项很好。
    7. Jenkins的步骤为slightly different,但也不是太复杂。

      WebHook vs Poll

      TC的最小轮询间隔是一分钟。如果您同意等待,或者您的TC实例未公开(安装在防火墙后面),请使用此选项触发构建。

      如果您想要几乎即时构建并且您的构建服务器具有公共访问权限,您可以选择WebHook选项。当有人推送代码或标签时,GitHub会通知您的CI服务器。

答案 1 :(得分:0)

AppVeyor是GitHub上越来越受欢迎的CI。

例如,请参阅this project如何定义appveyor.yml文件以配置CI。