我们的团队正在实施 Azure DevOps 测试管道。在我们最初提交创建管道 .yml 文件后,显示了此错误消息。经过研究后,我意识到我忘记将触发器包含在 .yml 中。但是添加后,这个错误消息并没有消失。不过,管道正在按预期工作,我们只是使用手动触发器,如下所示。唯一列出的问题来自我们最初的提交。有没有一种方法可以让我承认这个错误并让它消失,或者我是否可能错过了一个我还没有注意到的不同错误?感谢您提前提供任何帮助,如果我可以提供任何其他信息,请告诉我。
以下是我在查看该管道的运行时看到的错误消息。我还附上了我如何设置触发器的屏幕截图。

编辑:根据要求,我在下面包含了实际的 .yml 文件代码,并进行了轻微的命名修改。我们确实有一些自定义插件,例如为未跟踪但仍需要创建的文件创建文件。因此,您可能需要删除它们来测试这一点。
trigger:
- none
pool:
name: myPool
demands:
- msbuild
- visualstudio
steps:
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.4.1'
inputs:
versionSpec: 4.4.1
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: '$(Parameters.solution)'
- task: eliostruyf.build-task.custom-build-task.file-creator@6
displayName: 'Create Connection Strings file'
inputs:
filepath: '$(System.DefaultWorkingDirectory)/ID_Web/config/ConnectionStrings.config'
filecontent: |
<connectionStrings>
</connectionStrings>
endWithNewLine: true
- task: eliostruyf.build-task.custom-build-task.file-creator@6
displayName: 'Create Developer Settings File'
inputs:
filepath: '$(System.DefaultWorkingDirectory)/ID_Web/config/developerAppSettings.config'
filecontent: |
<appSettings>
</appSettings>
endWithNewLine: true
- task: …Run Code Online (Sandbox Code Playgroud) 我们有一个 Azure DevOps 管道,它使用带有 Azure DevOps Server 2019 的自托管 Windows 代理。该管道运行我们的前端测试,没有任何问题。然而,有时我们的 linting 步骤会发现它作为警告抛出的问题(例如未使用的变量)。这就是我们希望它做的,但问题是这些警告没有被提升。因此,查看它们的唯一方法是查看构建执行。
我们可以通过向 linting 命令添加 vso 格式化程序来解决这个问题:npm run nx run-many -- --target="lint" --all --skip-nx-cache=true --parallel --format=vso。所以现在警告是这样抛出的:
如绿色框中所示,警告正确显示。然而,在红色圆圈中,构建、作业和 linting 任务的状态都是成功。有没有办法可以将此构建、作业和任务标记为警告,以便我们知道要进一步查看?感谢您的帮助,如果我可以提供更多信息,请告诉我。
我们的团队正在尝试实施 Azure DevOps 管道,但遇到了一些问题。作为背景,我们正在自托管 Windows 服务器上运行测试。我们对所有工作进行了前端测试,但现在我们在让后端通过方面遇到了问题。
虽然大多数测试都顺利通过,但我们还是有一些情况没有按预期工作。尽管它们应该能够并行运行,但我将其关闭以验证这不是问题。我还尝试过单独运行它们,没有任何明显的变化。
我们得到的错误只是简单的断言失败,如下所示,它没有给我们提供太多信息。
Error Message:
Assert.AreEqual failed. Expected:<True>. Actual:<False>.
Run Code Online (Sandbox Code Playgroud)
但行号指向一个模拟设置,如下所示,我不明白。
mockQueryHandler.Setup(x => x.Handle(It.IsAny<FindQuery>())).Returns(info);
Run Code Online (Sandbox Code Playgroud)
目前给我们带来最多问题的测试类是测试我们的事件警报功能的测试类。看起来第一个测试会通过,但后面的测试会失败。但是,我们的管道设置可以重新运行任何失败的测试三次,直到它放弃。因此,每次重新运行时,下一个测试都会通过。我唯一能想到的是我们的自动模拟由于某种原因给我们带来了麻烦。我们按照 AutoMock - 如何使用 Keyed Registrations 进行单元测试?
我们模拟如下:
var IAbstractEventFactoryMock = new Mock<IAbstractEventFactory>();
using (var mock = AutoMock.GetLoose(builder => builder.RegisterInstance(IAbstractEventFactoryMock.Object).Keyed<IAbstractEventFactory>("EventLogFactory").Keyed<IAbstractEventFactory>("ArpEventLogFactory"))) {
...
}
Run Code Online (Sandbox Code Playgroud)
下面是我们的 .runsettings 文件
<RunSettings>
<RunConfiguration>
<ResultsDirectory>.\TestResults</ResultsDirectory>
</RunConfiguration>
<MSTest>
</MSTest>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)
下面是我们用来运行测试的 YAML
steps:
- task: VSTest@2
displayName: 'Run All Tests'
inputs:
testAssemblyVer2: |
**\*ID_Test*.dll
!**\*TestAdapter.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)/ID_Test'
runSettingsFile: 'ID_Test/.runsettings'
runInParallel: false
runTestsInIsolation: true
codeCoverageEnabled: false
testRunTitle: 'Unit Tests' …Run Code Online (Sandbox Code Playgroud) unit-testing azure-devops azure-devops-self-hosted-agent azure-devops-pipelines
对于我们的管道,我们在同一台计算机上安装了两个 Windows 自托管代理。下面列出了我们的主要前端管道 .yml。这工作得很好,除了由于某种原因npm install没有得到 nx 或玩笑。为了解决这个问题,我们只需在每个代理的管道中运行一次npm install -g nx即可。npm install -g jest第一次运行后一切正常,我们可以删除额外的安装以加快执行速度。但是,当 nx 或 jest 的新版本发布时,它不会更新,这绝对不是最佳实践。
我猜问题是这些需要全局安装才能工作,所以常规程序npm install无法实现这一点。我包含了我们的一个稍微修改过的版本package.json,它显示了 nx (@nrwl) 和 jest 包含在包中。有谁知道安装 nx 和 jest 的更好方法,而无需在每个管道构建中重新安装它们,并且在首次使用新代理运行后无需删除安装语句?预先感谢您的任何建议,如果我可以提供任何其他信息,请告诉我。
trigger:
- none
pool: 'myPool'
variables:
npm_config_cache: $(Pipeline.Workspace)/.npm
steps:
- checkout: self
clean: true
- task: NodeTool@0
inputs:
versionSpec: '12.x'
displayName: 'Install Node.js'
# Install stuff
- task: Npm@1
timeoutInMinutes: 10
inputs:
command: 'install'
workingDir: '$(System.DefaultWorkingDirectory)/ID_CLIENT'
displayName: 'npm install'
# Test stuff …Run Code Online (Sandbox Code Playgroud)