Dela via


Använd variabler och parametrar på ett säkert sätt i pipelinen

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Lär dig hur du på ett säkert sätt använder variabler och parametrar för att samla in indata från pipelineanvändare. Mer information finns i följande artiklar:

Var försiktig med hemliga variabler. De rekommenderade metoderna för att ange hemliga variabler är att använda användargränssnitt, skapa en variabelgrupp eller använda en variabelgrupp som kommer från Azure Key Vault. Mer information finns i ange hemliga variabler.

Variabler

Variabler fungerar som en praktisk metod för att samla in användarindata i förväg och underlätta dataöverföring mellan pipelinesteg. Var dock försiktig när du arbetar med variabler. Som standard är nyligen skapade variabler, oavsett om de definieras i YAML eller skriptade, skrivskyddade. Underordnade steg kan ändra variabelvärden oväntat.

Tänk till exempel på följande skriptfragment:

msbuild.exe myproj.proj -property:Configuration=$(MyConfig)

Om ett föregående steg anges MyConfig till Debug & deltree /y c:kan det leda till oavsiktliga konsekvenser. Även om det här exemplet bara tar bort innehållet i byggagenten, belyser det den potentiella faran med sådana inställningar.

Du kan göra variabler skrivskyddade. Systemvariabler som Build.SourcesDirectory, aktivitetsutdatavariabler och kötidsvariabler är alltid skrivskyddade. Variabler som skapas i YAML eller skapas vid körning av ett skript kan anges som skrivskyddade. När ett skript eller en uppgift skapar en ny variabel kan den isReadonly=true skicka flaggan i loggningskommandot för att göra variabeln skrivskyddad.

I YAML kan du ange skrivskyddade variabler med hjälp av följande specifika nyckel:

variables:
- name: myReadOnlyVar
  value: myValue
  readonly: true

Kötidsvariabler

När du definierar en variabel i redigeraren för pipelines-användargränssnittet kan du tillåta att användare åsidosätter dess värde under pipelinekörningen. Dessa variabler kallas kötidsvariabler och definieras alltid i redigeraren för pipelines-användargränssnittet.

Skärmbild av hur du definierar en kötidsvariabel.

Kötidsvariabler exponeras för slutanvändaren när de kör en pipeline manuellt och de kan ändra sina värden. Skärmbild av uppdatering av värdet för en kötidsvariabel.

Användare behöver behörighet att redigera köversionskonfiguration på pipelinen för att ange variabler som angetts vid kötid.

Begränsa variabler som kan ställas in vid kötid

Användargränssnittet och REST-API:et som används för att köra en pipeline ger användarna möjlighet att definiera nya variabler i kö.

Skärmbild av att lägga till en kötidsvariabel precis innan du kör pipelinen.

I början av Azure Pipelines hade den här funktionen följande problem:

  • Det gjorde det möjligt för användare att definiera nya variabler som inte redan definierats av pipelineförfattaren i definitionen.
  • Det gjorde det möjligt för användare att åsidosätta systemvariabler.

För att åtgärda dessa problem definierade vi en inställning för att begränsa variabler som kan ställas in vid kötid. Med den här inställningen aktiverad kan endast de variabler som uttryckligen markerats som "Settable at queue time" anges. Med andra ord kan du ange eventuella variabler vid kötid om inte den här inställningen är aktiverad.

Inställningen är utformad för att fungera på organisations- och projektnivå.

  • Organisationsnivå:
    • När inställningen är aktiverad framtvingar den att endast variabler som uttryckligen har markerats som "Settable at queue time" kan ändras för alla pipelines i alla projekt inom organisationen.
    • Projektsamlingsadministratörer kan aktivera eller inaktivera den här inställningen.
    • Öppna den här inställningen under Inställningar för organisationsinställningar>Pipelines.> Skärmbild av begränsning av variabler som kan ställas in vid kötid på organisationsnivå.
  • Projektnivå:
    • Precis som på organisationsnivå säkerställer aktivering av den här inställningen att endast variabler som markerats som "Settable at queue time" kan ändras för alla pipelines i det specifika projektet.
    • Om inställningen på organisationsnivå är aktiverad gäller den för alla projekt och kan inte stängas av.
    • Projektadministratörer kan aktivera eller inaktivera den här inställningen.
    • Få åtkomst till den här inställningen under Inställningar för pipelines för> Projektinställningar.> Skärmbild av begränsning av variabler som kan ställas in vid kötid på projektnivå.

I följande exempel visas inställningen på och din pipeline definierar en variabel med namnet my_variable som inte kan anges vid kötid. Skärmbild av att definiera en variabel i en klassisk pipeline.

Anta sedan att du vill köra pipelinen. Panelen Variabler visar inga variabler och knappen Lägg till variabel saknas.

Skärmbild av variabelpanelen med inställningen på.

Användning av REST API-anropen Builds – Queue och Runs – Run Pipeline för att köa en pipelinekörning och ange värdet my_variable för eller för en ny variabel misslyckas med ett fel som liknar följande.

{
  "$id": "1",
  "innerException": null,
  "message": "You can't set the following variables (my_variable). If you want to be able to set these variables, then edit the pipeline and select Settable at queue time on the variables tab of the pipeline editor.",
  "typeName": "Microsoft.Azure.Pipelines.WebApi.PipelineValidationException, Microsoft.Azure.Pipelines.WebApi",
  "typeKey": "PipelineValidationException",
  "errorCode": 0,
  "eventId": 3000
}

Parametrar

Till skillnad från variabler kan en pipeline som körs inte ändra pipelineparametrar. Parametrar har datatyper som number och string, och de kan begränsas till specifika värdeunderuppsättningar. Den här begränsningen är värdefull när en användarkonfigurerbar aspekt av pipelinen endast ska acceptera värden från en fördefinierad lista, vilket säkerställer att pipelinen inte accepterar godtyckliga data.

Aktivera parameterverifiering för shell-uppgifter

Pipelines kan referera till uppgifter som körs i pipelinen. Vissa aktiviteter innehåller en arguments parameter som gör att du kan ange fler alternativ för aktiviteten.

När inställningen Aktivera parametervalidering av shell-uppgiftsargument är aktiverad granskas argumentparametern för att säkerställa att gränssnittet korrekt kör tecken som semikolon, citattecken och parenteser. På samma sätt som med alternativet Gränsvariabler som kan ställas in vid kötid kan du konfigurera Parametervalidering av parametervalidering för skaluppgifter på organisations- eller projektnivå under Inställningar>Pipelines-inställningar.>

När den här funktionen är aktiverad utlöser eventuella valideringsproblem relaterade till parametern arguments ett felmeddelande som liknar följande:

Detected characters in arguments that may not be executed correctly by the shell. Please escape special characters using backtick (`).

Lös problemet genom att justera argumenten genom att undvika specialtecken som anges i felmeddelandet. Den här valideringen gäller för parametern arguments i följande specifika uppgifter:

  • PowerShell
  • BatchScript
  • Bash
  • Ssh
  • AzureFileCopy
  • WindowsMachineFileCopy

Nästa steg