簡體   English   中英

在 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:

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 變量。 該變量將在后續任務的上下文中設置,以便他們可以找到工具。

將環境更改保留到同一作業上下文中的新任務有點像 hack。

也可以看看:

| 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 環境添加路徑而創建的,即使其他工具安裝程序任務在您的腳本部分之后運行,它也可以工作。

也可以看看:

對於您問題的第一部分(“我沒有看到任何內聯 PowerShell 腳本”),語法

- powershell: |

是內聯腳本的簡寫。 對於問題的第二部分,該任務似乎首先嘗試將目錄添加到任務中的 PATH 環境變量,然后“導出”(通過task.setvariable )該值作為發布變量到其他任務/作業/階段。

不僅如此,如果沒有進一步澄清您的問題和/或作業運行中的 output,我不能說更多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM