在 Yaml 管道中修复 PowerShell
Fixing PowerShell in the Yaml Pipeline
我有一个现有的 Yaml 管道,我正在尝试理解和修复某些问题。因为我是新手,所以在这个现有的管道中我无法理解的东西很少。我想知道下面的任务在做什么。我在这里没有看到任何内联 PowerShell 脚本,这就是为什么将其创建为 PowerShell 的原因。任务是在 ABC_x64-$(osSuffix)\bin 文件夹中添加 POMLXX dll,但下面的脚本是如何做到的
- powershell: |
Set-Variable -Name PATH -Value "$env:PATH;$(IppRoot)\redist\intel64_win\ipp;$(Build.SourcesDirectory)\ABC_x64-$(osSuffix)\bin;$(Build.BinariesDirectory);$(PuLib)/imports/Pulib67/dll/amd64;$(POMLXX)/runtimes/win-x64/native"
Write-Host "##vso[task.setvariable variable=PATH]$PATH"
displayName: 'Add AbcRoot, IPP binaries, Pulib67 and POMLXX to PATH on Win'
condition: eq(variables['Agent.OS'], 'Windows_NT')
- bash: |
export LD_LIBRARY_PATH="$(IppRoot)/redist/intel64_win/ipp:$(Build.SourcesDirectory)/MyProject_x64-$(osSuffix)/lib"
echo "##vso[task.setvariable variable=LD_LIBRARY_PATH]$LD_LIBRARY_PATH"
echo "##vso[task.setvariable variable=DYLD_LIBRARY_PATH]$LD_LIBRARY_PATH"
displayName: 'Add OrzRoot, IPP binaries and LibFT4222 to (DY)LD_LIBRARY_PATH on Linux and Mac'
condition: in(variables['Agent.OS'], 'Darwin', 'Linux')
对于问题的第一部分(“我没有看到任何内联 PowerShell 脚本”),语法
- powershell: |
是 shorthand 内联脚本。对于问题的第二部分,任务似乎首先尝试将目录添加到任务中的 PATH 环境变量,然后“导出”(通过 task.setvariable
)该值作为释放变量到其他 tasks/jobs/stages.
除了你的问题,and/or 作业的输出运行。
,我不能说更多
这块是powershell:
Set-Variable -Name PATH -Value "$env:PATH;$(IppRoot)\redist\intel64_win\ipp;$(Build.SourcesDirectory)\ABC_x64-$(osSuffix)\bin;$(Build.BinariesDirectory);$(PuLib)/imports/Pulib67/dll/amd64;$(POMLXX)/runtimes/win-x64/native"
Write-Host "##vso[task.setvariable variable=PATH]$PATH"
它将一堆路径添加到 PATH powershell 变量 (set-variable -Name PATH
),包括从代理下来的路径环境变量,然后将其导出回代理 (Write-Host
一个特殊的命令字符串)通过重新设置 Azure Pipelines PATH 变量。该变量将在后续任务的上下文中设置,以便他们可以找到工具。
在相同的作业上下文中将对环境的更改保留到新任务中有点麻烦。
另请参阅:
powershell:
之后的 |
指示 YAML 解析器将下一个缩进块解释为多行字符串。
另请参阅:
更好的解决方案
有一个更好的解决方案,看起来很相似:
powershell: |
write-host "##vso[task.prependpath]$(IppRoot)\redist\intel64_win\ipp"
write-host "##vso[task.prependpath]$(Build.SourcesDirectory)\ABC_x64-$(osSuffix)\bin"
... etc
此命令是专门为向 PATH 环境添加路径而创建的,即使其他工具安装程序任务 运行 在您的脚本部分之后也能正常工作。
另请参阅:
我有一个现有的 Yaml 管道,我正在尝试理解和修复某些问题。因为我是新手,所以在这个现有的管道中我无法理解的东西很少。我想知道下面的任务在做什么。我在这里没有看到任何内联 PowerShell 脚本,这就是为什么将其创建为 PowerShell 的原因。任务是在 ABC_x64-$(osSuffix)\bin 文件夹中添加 POMLXX dll,但下面的脚本是如何做到的
- powershell: |
Set-Variable -Name PATH -Value "$env:PATH;$(IppRoot)\redist\intel64_win\ipp;$(Build.SourcesDirectory)\ABC_x64-$(osSuffix)\bin;$(Build.BinariesDirectory);$(PuLib)/imports/Pulib67/dll/amd64;$(POMLXX)/runtimes/win-x64/native"
Write-Host "##vso[task.setvariable variable=PATH]$PATH"
displayName: 'Add AbcRoot, IPP binaries, Pulib67 and POMLXX to PATH on Win'
condition: eq(variables['Agent.OS'], 'Windows_NT')
- bash: |
export LD_LIBRARY_PATH="$(IppRoot)/redist/intel64_win/ipp:$(Build.SourcesDirectory)/MyProject_x64-$(osSuffix)/lib"
echo "##vso[task.setvariable variable=LD_LIBRARY_PATH]$LD_LIBRARY_PATH"
echo "##vso[task.setvariable variable=DYLD_LIBRARY_PATH]$LD_LIBRARY_PATH"
displayName: 'Add OrzRoot, IPP binaries and LibFT4222 to (DY)LD_LIBRARY_PATH on Linux and Mac'
condition: in(variables['Agent.OS'], 'Darwin', 'Linux')
对于问题的第一部分(“我没有看到任何内联 PowerShell 脚本”),语法
- powershell: |
是 shorthand 内联脚本。对于问题的第二部分,任务似乎首先尝试将目录添加到任务中的 PATH 环境变量,然后“导出”(通过 task.setvariable
)该值作为释放变量到其他 tasks/jobs/stages.
除了你的问题,and/or 作业的输出运行。
,我不能说更多这块是powershell:
Set-Variable -Name PATH -Value "$env:PATH;$(IppRoot)\redist\intel64_win\ipp;$(Build.SourcesDirectory)\ABC_x64-$(osSuffix)\bin;$(Build.BinariesDirectory);$(PuLib)/imports/Pulib67/dll/amd64;$(POMLXX)/runtimes/win-x64/native"
Write-Host "##vso[task.setvariable variable=PATH]$PATH"
它将一堆路径添加到 PATH powershell 变量 (set-variable -Name PATH
),包括从代理下来的路径环境变量,然后将其导出回代理 (Write-Host
一个特殊的命令字符串)通过重新设置 Azure Pipelines PATH 变量。该变量将在后续任务的上下文中设置,以便他们可以找到工具。
在相同的作业上下文中将对环境的更改保留到新任务中有点麻烦。
另请参阅:
powershell:
之后的 |
指示 YAML 解析器将下一个缩进块解释为多行字符串。
另请参阅:
更好的解决方案
有一个更好的解决方案,看起来很相似:
powershell: |
write-host "##vso[task.prependpath]$(IppRoot)\redist\intel64_win\ipp"
write-host "##vso[task.prependpath]$(Build.SourcesDirectory)\ABC_x64-$(osSuffix)\bin"
... etc
此命令是专门为向 PATH 环境添加路径而创建的,即使其他工具安装程序任务 运行 在您的脚本部分之后也能正常工作。
另请参阅: