Problem
Mam pipline w Azure DevOps, a w nim - jakś zmienną. Chcę wartość tej zmiennej “wepchnąć” do zmiennej środowiskowej - tak aby jakieś kolejne kroki mogły z niej skorzystać. (Przyjmijmy, że tę wartość mogę przekazać tylko przez environment variable - a nie przez bezpośrednie odwołanie do “pajplajnowej” zmiennej w danym kroku.)
Rozwiązanie nr 1 (nie działa :( )
Szybki risercz internetów i sklecam takie coś:
- variables:
myVariable: abc
- steps:
- script: echo "##vso[task.setvariable variable=sauce.userName;issecret=true]$(myVariable)"
# other stepsEfekt? Do zmiennej trafiła wartość następująca: abc" (tak, z cudzysłowem na końcu…). Facepalm. Nie szło to nijak ominąć - usunięcie w ogóle cudzysłowów, powodowało, że ##vso... było traktowane jak komentarz w YAML-u (a więc odpalane było samo echo…), jakieś podmianki cudzysłowów na pojdyncze/podwójne - to samo.
Rozwiązanie nr 2 - działające!
Rozwiązaniem była przesiadka na PowerShella. Co ważne - reszta kroków może pozostać bez zmian (nie musimy innych kroków zmieniać na PowerShella). Takie krok wygląda wówczas następująco:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host "##vso[task.setvariable variable=SAUCE_USERNAME;]$(sauceUserName)"Upierdliwe, nieprawdaż?