Ian*_*son 3 dotnet-cli azure-pipelines-tasks azure-pipelines-yaml
我有几个使用连接字符串的集成测试。该测试是从 azure devops 管道运行的,具有 yaml 定义(DotNetCoreCLI@2 任务)
这个 connstrings 曾经在 .runsettings 文件中设置,但我希望它们是秘密的,所以我将 conn 字符串移动到管道库,并标记为秘密。
同时,我已从运行设置文件中删除了机密,将参数值保留为空字符串。
所以现在,我只需在运行 dotnet test 时覆盖测试运行参数值...
通过阅读Microsoft的文档,我已经验证我可以在 Powershell 中完成此操作
dotnet test path\to\mytest.dll --logger trx --settings path\to\my.runsettings --% -- TestRunParameters.Parameter(name=\"Customer1.TestConnStr\", value=\"Id=xxx;Pass=yyy\") TestRunParameters.Parameter(name=\"Customer2.TestConnStr\", value=\"Id=xxx;Pass=yyy\")
Run Code Online (Sandbox Code Playgroud)
我还发现从 cmd 运行时不使用 --%,我认为这更适合我的 yaml 管道(在 Windows 代理上运行)。但是,我仍然无法在我的 yaml 任务中表达上述内容。我做了很多猜测,一个例子在这里:
- ${{ each project in parameters.projects }}:
- task: DotNetCoreCLI@2
displayName: Execute ${{ project }} integration tests
condition: succeededOrFailed()
inputs:
command: 'test'
projects: '$(Pipeline.Workspace)/IntegrationTests/*/*${{ project }}.Test.dll'
arguments: '--settings ${{ parameters.testRunSettingsFile }} -- TestRunParameters.Parameter(name=\"Customer1.TestConnStr\", value=\"${{ parameters.testConnStr }}\" TestRunParameters.Parameter(name=\"Customer2.TestConnStr\", value=\"${{ parameters.testConnStr }}\")'
testRunTitle: ${{ parameters.testRunTitlePrefix }}${{ project }}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,参数覆盖名称和值的引号不会出现在生成的命令中。给我一个错误:
The test run parameter argument is invalid. Please use the format below. Format: TestRunParameters.Parameter(name=\"<name>\", value=\"<value>\")
Run Code Online (Sandbox Code Playgroud)
如下所示替换正确的 yaml 转义单引号会产生相同的错误:
-- TestRunParameters.Parameter(name=''Customer1.TestConnStr'', value=''${{ parameters.testConnStr }}''
Run Code Online (Sandbox Code Playgroud)
所以我认为我已经接近解决方案了,这可能只是我的角色逃脱的原因,但我只是找不到如何逃脱或逃脱什么。
经过一番试验和错误后,我自己最终解决了这个问题,只是正确转义文字反斜杠双引号的问题。"\""
所以我的 YAML 中有以下行:
arguments: '--settings ${{ parameters.testRunSettingsFile }} -- TestRunParameters.Parameter(name="\""Customer1.TestConnStr"\"", value="\""${{ parameters.testConnStr }}"\"" TestRunParameters.Parameter(name="\""Customer2.TestConnStr"\"", value="\""${{ parameters.testConnStr }}"\"")'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2872 次 |
| 最近记录: |