Azure Pipelines 在脚本中使用包含换行符的字符串值设置变量
Azure Pipelines Set variable in script with string value that contains newline
我正在尝试为内部包含多个 Web 项目的解决方案构建 aspnetcore 工件。默认的 netcore 发布任务具有复选框 "Publish Web Projects",可查找包含 web.config 或 wwwroot 文件夹的所有项目,但我的 WebApi 项目根本不需要它们。
您可以禁用此复选框并提供指向您要发布的项目的路径。每个项目必须在单独的行中提供。
因此,如果我在任务属性 window 中编辑此设置,一切正常,因为多行编辑器的行为符合预期。但是我想将项目列表移动到变量,存储所有其他配置。然而变量的编辑器是单行的。
我决定将项目名称放在带有“;”的变量中分隔符并编写正确构建发布任务路径的 powershell 任务:
$projects = '$(PublishProjects)'
$result = ( $projects.Split(@(';'), [System.StringSplitOptions]::RemoveEmptyEntries) | %{ ('**\' + $_.Trim() + '.csproj') } ) -join "`n"
Write-Host "##vso[task.setvariable variable=PublishProjectsPath]$result"
不幸的是,这导致将 PublishProjectsPath 的值设置为仅第一个项目,导致除了第一个项目路径之外的所有项目路径都打印在自己的行上而没有 ##vso... 因此 azure 有效地忽略了它们。
有什么方法可以从脚本中正确设置管道变量吗?
我不能使用 azure-pipelines.yml 因为 azure 不支持 gitlab :(
你设置变量 as job-scoped。
您需要设置 multi job output variable 和 ##vso[task.setvariable variable=myOutputVar;isOutput=true]
Set variable in script with string value that contains newline
对于这个问题,恐怕目前azure devops不支持。 dotnet publish task
虽然有支持多行内容的文本框,但目前不支持多行字符串作为变量的值。
到目前为止,在我们Azure Devops论坛的官方功能建议中,一直存在这样的建议:https://developercommunity.visualstudio.com/idea/365667/multiple-lines-variable-in-build-and-release.html。
您可以对该建议票进行投票并在那里分享您的评论,产品团队会在他们查看后提供更新。对此感兴趣的朋友可以投票和追踪。
我正在尝试为内部包含多个 Web 项目的解决方案构建 aspnetcore 工件。默认的 netcore 发布任务具有复选框 "Publish Web Projects",可查找包含 web.config 或 wwwroot 文件夹的所有项目,但我的 WebApi 项目根本不需要它们。 您可以禁用此复选框并提供指向您要发布的项目的路径。每个项目必须在单独的行中提供。
因此,如果我在任务属性 window 中编辑此设置,一切正常,因为多行编辑器的行为符合预期。但是我想将项目列表移动到变量,存储所有其他配置。然而变量的编辑器是单行的。
我决定将项目名称放在带有“;”的变量中分隔符并编写正确构建发布任务路径的 powershell 任务:
$projects = '$(PublishProjects)'
$result = ( $projects.Split(@(';'), [System.StringSplitOptions]::RemoveEmptyEntries) | %{ ('**\' + $_.Trim() + '.csproj') } ) -join "`n"
Write-Host "##vso[task.setvariable variable=PublishProjectsPath]$result"
不幸的是,这导致将 PublishProjectsPath 的值设置为仅第一个项目,导致除了第一个项目路径之外的所有项目路径都打印在自己的行上而没有 ##vso... 因此 azure 有效地忽略了它们。
有什么方法可以从脚本中正确设置管道变量吗? 我不能使用 azure-pipelines.yml 因为 azure 不支持 gitlab :(
你设置变量 as job-scoped。
您需要设置 multi job output variable 和 ##vso[task.setvariable variable=myOutputVar;isOutput=true]
Set variable in script with string value that contains newline
对于这个问题,恐怕目前azure devops不支持。 dotnet publish task
虽然有支持多行内容的文本框,但目前不支持多行字符串作为变量的值。
到目前为止,在我们Azure Devops论坛的官方功能建议中,一直存在这样的建议:https://developercommunity.visualstudio.com/idea/365667/multiple-lines-variable-in-build-and-release.html。
您可以对该建议票进行投票并在那里分享您的评论,产品团队会在他们查看后提供更新。对此感兴趣的朋友可以投票和追踪。