任务自定义条件:给定文件是否存在?

cat*_*ood 8 azure-devops

我想做什么

我有一个任务要执行,只有在某个配置文件存在时才有意义。所以我想在该true文件存在时返回的任务上放置一个自定义条件。我想这样的语法是有意义的:

condition: exists('$(projectPath)\myconfigfile.xml')
Run Code Online (Sandbox Code Playgroud)

这似乎是自定义条件的合理用例。

什么 Microsoft 文档

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops#functions

微软表示以下功能始终可用:and, coalesce, contains, endsWith, eq, format, ge, gt, in, le, lt, ne, not, notIn, or, startsWith, xor. 此外:

“根据上下文,可能还有其他功能可用……”

我的实际问题

我觉得这有点令人沮丧。有哪些“其他功能”?我该如何研究它们?特别是,是否有一个文件名并告诉我该文件是否存在?

jhh*_*ams 28

丹尼尔的回答是正确的,所以只是提供一个例子:

创建一个 PowerShell 任务来设置管道变量:

$fileExists = Test-Path -Path "$(System.DefaultWorkingDirectory)/file.txt"
Write-Output "##vso[task.setvariable variable=FileExists]$fileExists"
Run Code Online (Sandbox Code Playgroud)

创建一个在自定义条件中使用变量的辅助任务:

eq(variables['FileExists'], True)
Run Code Online (Sandbox Code Playgroud)


Dan*_*ann 11

There is no built in condition or function that operates off of the presence or absence of a file.

您可以编写并运行设置变量的脚本,然后检查变量的内容。