【问题标题】:Azure DevOps pipeline build locally with YAML使用 YAML 在本地构建 Azure DevOps 管道
【发布时间】:2019-04-06 18:49:36
【问题描述】:

如何在本地机器上模拟 Azure Devops 管道的构建过程,然后再将其推送到分支以测试可能的错误。

解决方案在本地正确构建,没有错误和警告。同样从 VS 命令行 MSBuild 构建没有错误的解决方案,但在一些推送尝试中,管道构建会引发许多错误,主要与 preprocessor defenitionprecompiled header 相关。

我想知道如何在我的机器上本地测试相同的进程而无需推送到 repo。

azure-pipelines.yml
-------------------
pool:
  vmImage: 'vs2017-win2016'

steps:
- task: MSBuild@1
  displayName: 'Build solution'
  inputs:
    platform: 'Win32'
    configuration: 'release'
    solution: 'mysolution.sln'
- task: VSTest@2
  displayName: 'Run Test'
  inputs:
    platform: 'Win32'
    Configuration: 'release'
    testAssemblyVer2: |
     **\*.Test.dll
     !**\*TestAdapter.dll
     !**\obj\**
    runSettingsFile: project.Test/test.runsettings
    codeCoverageEnabled: true 

【问题讨论】:

标签: visual-c++ azure-devops azure-pipelines


【解决方案1】:

如果您使用的是 git repsotiory,您可以创建另一个分支并发出拉取请求。只要拉取请求未设置为自动完成,代码就不会提交到存储库。

如果您使用的是 TFVC 存储库,则可以设置配置为失败的封闭式构建。该管道应该是原始管道的副本,但在生成管道的末尾添加一个 PowerShell 任务,该任务会引发终止错误。请务必在单独的分支上设置此封闭式构建,以免妨碍正常开发。

Write-Error "Fail here" -ErrorAction 'Stop'

您现在可以在不实际提交代码的情况下发出拉取请求或触发门控构建。

如果您需要其他代理,您可以使用 AzurePipelinesPS 通过 Install-APAgent 命令在本地计算机上安装代理。

【讨论】:

    【解决方案2】:

    我只花了几个小时就开始使用 Azure 进行开发,但我想我找到了适合你的解决方案。我碰巧已经有了解决方案。 使用 gradle,那么默认的 YML 就只是运行 gradle,第一次运行后就不用太担心了。如果需要,您还可以在 gradle 文件中启动 docker 映像并在此基础上进行构建。

    【讨论】:

    • 我什么也没得到。所以,我下载 gradle 并在某处写“使用 gradle”,它会神奇地从我硬盘上的许多项目中取出正确的 yaml 文件吗?还是会运行所有不同的 yaml?我也可以启动一个 docker img,为了什么???如果我已经完成运行 yaml?每个步骤的结果将显示在屏幕上的日志文件的什么位置?或者,也许你会得到一个 UI,你可以在哪里放置断点或什么? Gradle 将如何处理管道结果?它会安装在 docker img 中还是会跳过安装部分?
    • @zameb:我花了一些时间试图回忆这是关于什么的,哈哈,很久以前了。我相信我想说的要点是:在本地使用 gradle 或 maven 构建,通过调用 gradle 或 maven 来构建 Azure ......这样您就可以像远程一样在本地构建,而无需更改。问题是 Azure 在 YML 中有这个构建文件规范文件,但它只能在 Azure 上运行,这很糟糕......所以使用更好的工具构建,让 Azure 通过它的 YML 构建规范运行该工具。
    【解决方案3】:

    您遇到的问题很可能与您的本地环境与此 YAML 管道执行构建的构建代理之间的差异有关。在本地测试它(即使可能)也无济于事,因为它将在 您的 环境中执行,您已经知道成功构建所需的每个组件都已安装。另一方面,在 build agent 正在运行构建的环境中,似乎缺少导致构建失败的组件(或不同版本)。尝试比较本地计算机和构建代理上已安装组件和环境变量(如 PATH)的列表 - 它们之间可能存在一些差异。

    【讨论】:

      猜你喜欢
      • 2019-05-14
      • 1970-01-01
      • 2020-06-08
      • 2020-01-18
      • 2022-11-03
      • 2021-01-21
      • 1970-01-01
      • 2023-01-11
      • 2020-05-23
      相关资源
      最近更新 更多