O mnieBlogGitHub

Jak ustawić zmienną środowiskową w Azure DevOps pipeline?

12 January, 2021 - 1 min read

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 steps

Efekt? 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ż?

© 2021, Built with Gatsby