【问题标题】:How to create generic build and release on VSTS如何在 VSTS 上创建通用构建和发布
【发布时间】:2018-03-27 04:45:29
【问题描述】:

在采用微服务架构时,我们发现我们有很多具有相同结构的项目。

.Net 和 .Net Core 项目更具体,其中大部分发布为 Azure 应用服务(Web 应用)。

今天我们要为每个项目/应用配置一个 Build 定义和一个 Release 定义。

有没有办法只有一个 Build 定义和一个 Release 定义可以由任何签入触发、构建特定项目并创建发布到特定应用服务的发布?

谢谢

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-release-pipeline


    【解决方案1】:

    是的,这是可能的。您可以通过构建和发布定义分别构建/部署不同类型的项目。

    假设你在 git repo 中有两个项目:

    root
      |___ .git      
      |___ dotnetProject
                 |___ dotnetProject.sln
                 |___ dotnetProject
                           |___ dotnetProject.csproj
                           |___ …
      |___ dotnetCoreProject
                 |___ dotnetCoreProject.sln
                 |___ dotnetCoreProject
                           |___ dotnetCoreProject.csproj
                           |___ …
    

    详细设置如下:

    1. 在构建和发布定义中添加构建和部署项目所需的所有任务。
    2. 在构建和发布定义中分别定义两个变量 dotnet 和 dotnetCore,默认值为 0。
    3. 为您需要为不同类型的项目构建/部署的任务设置自定义条件。

      • 对于为 .NET 项目构建/部署的任务,请使用以下自定义条件:
      • 对于为 .NET Core 项目构建/部署的任务,请使用以下自定义条件:
    4. 通过添加 PowerShell 任务检测哪些项目已更改以进行 CI 构建。

      在任务的开头添加一个 PowerShell 任务,并检查上次提交更改了哪些文件。如果 .NET 项目已更改,请将 dotnet 变量设置为值 1 并创建一个文件 dotnet,其内容为 1。如果 .NET 核心项目已更改,请将变量 dotnetCore 设置为值 1,并创建一个文件 dotnetCore,内容为 1。

      注意:您还应该将文件 dotnet 和 dotnetCore 发布为构建工件,因为您应该根据文件在发布定义中解析 dotnet 和 dotnetCore 变量的值.

    5. 根据文件dotnet 和dotnetCore 更改dotnet 和dotnetCore 变量值。

      在发布定义的开头,添加一个 PowerShell 任务。检查文件dotnet/dotnetCore 是否在构建工件中。如果有,根据文件内容更改相关变量。

    【讨论】:

    • 嗨玛丽安娜!很有意思。但在这种情况下,我想在团队项目中只使用一个构建定义构建任何项目,并使用一个发布定义部署任何应用服务,并且这个发布定义必须能够识别生成的工件并将它们发布到正确的应用服务。可能吗?可能在您的示例中使用变量?谢谢
    • 是的,这个例子可以实现。您只需添加多个具有不同自定义条件的 Azure App Service Deploy 任务。只有满足自定义条件,任务才会运行。
    猜你喜欢
    • 2018-12-24
    • 2018-10-07
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多