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

2021-01-12

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


Robert Skarżycki - zdjęcie profilowe

Pisanina, której autorem jest Robert Skarżycki - programista .NET, mąż szczęśliwej żony, rodzic
moje bio
mój Twitter
mój LinkedIn
moje szkolenia i warsztaty

© 2022, Built with Gatsby & passion