在 VSTS 中为微服务架构构建发布流程

Building a release flow in VSTS for a micro service architecture

我正尝试在 Visual Studio Team Services 中为我的微服务架构项目设置发布流程。为了完成这项工作,我需要为我的解决方案中的每个 project/service 提取工件。我可以通过为每个具有硬编码值的服务设置单独的构建步骤来手动执行此操作。 但是如果我想让 i 更通用呢?

在我的梦想场景中,我将能够创建一个任务组,并将服务名称作为输入,然后能够发送要部署的 services/projects 列表。 我已经弄清楚如何创建任务组,但不知道如何将列表作为构建的输入,也不知道如何遍历调用我的任务的对象列表。 有什么建议么?任何第三方工具还是我应该花时间查看 powershell 脚本?

编辑:我会尝试用一些伪代码来阐明我想要的东西:

BuildAndReleaseCode(solution, listOfServicesToBuild)
{
    NuGetRestore(solution);
    outputfolder = BuildSolution(solution);
    //Add testing
    for (service in listOfServicesToBuild)
    {
        CopyFilesAndPublishArtifact(sourceFolder, targetfolder)
        DeployArtifact(targetFolder, targetMachine)
    }
}

大致流程:

  1. 创建构建定义以构建项目并发布工件(发布工件步骤)(具有多个 Visual Studio 构建步骤的构建定义或每个项目的多个构建定义) 您需要为 Visual Studio 构建指定 project/solution。
  2. 队列构建
  3. 创建发布定义
  4. Link 此版本的一个或多个工件(构建工件)(工件选项卡)
  5. 添加部署项目所需的任务和环境。
  6. 创建发布并开始发布部署

当有新的工件版本可用时,可能会触发发布(打开发布定义=>触发器选项卡)。

此外,在特定时间签入或排队构建时可能会触发构建。 (打开构建定义=>触发器选项卡)

更新:

对于Visual Studio构建步骤,可以使用通配符,例如,***.sln用于所有子文件夹中的所有sln文件,因此您无需使用硬编码值指定项目。

如果要在解决方案中构建特定项目,可以指定 /t parameter

如果这些项目位于不同的解决方案和位置,您可以创建一个 MSBuild project file,它使用 MSBuild 任务来构建项目。

另一方面,您可以自定义构建任务来实现这一点,您可以参考 VSBuild code and these articles (1 or 2) 自定义构建任务,之后,使用带有项目列表参数的自定义构建任务来构建项目你要。