Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Azure Pipelines-jobb består av steg, som kan vara uppgifter eller skript. En uppgift är ett fördefinierat skript eller en fördefinierad procedur som utför en åtgärd eller använder en uppsättning indata för att definiera pipelineautomatisering. I den här artikeln beskrivs pipelineuppgifter och hur du använder dem. Schemainformation finns i definitionen steps.task .
Azure Pipelines innehåller många inbyggda uppgifter som möjliggör grundläggande bygg- och distributionsscenarier. En lista över tillgängliga inbyggda Azure Pipelines-uppgifter finns i aktivitetsreferensen för Azure Pipelines. Du kan också installera uppgifter från Visual Studio Marketplace eller skapa anpassade uppgifter.
Som standard körs alla steg i ett jobb i följd i samma kontext, oavsett om det är på värden eller i en jobbcontainer. Du kan också använda stegmål för att styra kontexten för enskilda uppgifter. Information om hur du kör vissa uppgifter parallellt på flera agenter eller utan att använda en agent finns i Ange jobb i din pipeline.
Uppgiftshantering
Uppgifter är tillgängliga och installerade på Azure DevOps-organisationsnivå . Du kan bara använda uppgifter och uppgiftsversioner som finns för din organisation.
Du kan inaktivera inbyggda uppgifter, Marketplace-uppgifter eller båda iPipelines-inställningar för > under>. Om du inaktiverar både inbyggda uppgifter och Marketplace-uppgifter är endast uppgifter som du installerar med hjälp av Node CLI för Azure DevOps tillgängliga.
Om du inaktiverar Marketplace-uppgifter kan du förbättra pipelinesäkerheten. I de flesta fall bör du inte inaktivera inbyggda uppgifter. Mer information finns i Kontrollera tillgängliga uppgifter.
Anpassade uppgifter
Visual Studio Marketplace erbjuder många tillägg som du kan installera för att utöka Aktivitetskatalogen för Azure Pipelines. Du kan också skapa anpassade uppgifter. Mer information finns i Lägga till ett tillägg för anpassade pipelines-aktiviteter.
I YAML-pipelines refererar du till uppgifter efter namn. Om ditt anpassade aktivitetsnamn matchar ett inbyggt aktivitetsnamn använder pipelinen den inbyggda aktiviteten. För att undvika den här situationen kan du referera till din anpassade uppgift med hjälp av det unika aktivitets-GUID som du tilldelade när du skapade aktiviteten. Mer information finns i Förstå task.json komponenter.
Uppgiftsversioner
Aktiviteter är versionshanterade och du måste ange huvudversionen av de uppgifter som du använder i pipelinen. Om du anger versionen kan du förhindra problem när nya versioner av en uppgift släpps.
Pipelines uppdateras automatiskt för att använda nya deluppgiftsversioner, till exempel 1.2 till 1.3. Mindre uppgiftsversioner är vanligtvis bakåtkompatibla, men i vissa scenarier kan det uppstå oförutsägbara fel när en aktivitet uppdateras automatiskt.
Om en ny huvuduppgiftsversion, till exempel 2.0-versioner, fortsätter pipelinen att använda den huvudversion som du angav tills du redigerar pipelinen för att manuellt ändra till den nya huvudversionen. Byggloggar ger aviseringar när nya huvudversioner är tillgängliga. Du kan bara använda uppgiftsversioner som finns för din organisation.
I YAML anger du huvudversionen med hjälp @ av i uppgiftsnamnet. Om du till exempel vill använda version 2 av PublishTestResults uppgiften anger du PublishTestResults@2. Du kan ange vilken delversion som ska användas genom att ange det fullständiga uppgiftsversionsnumret efter @, till exempel GoTool@0.3.1.
Aktivitetsalternativ
Följande egenskaper är tillgängliga för YAML-pipelinesteg task . Mer information finns i definitionen steps.task .
| Fastighet | Typ | Description |
|---|---|---|
task |
snöre | Krävs som första egenskap. Namnet på den uppgift som ska köras. |
inputs |
snöre | Indata för aktiviteten med namn/värde-par. |
condition |
snöre | Villkor under vilka aktiviteten körs. |
continueOnError |
booleskt | Om du vill fortsätta köra även vid fel. |
displayName |
snöre | Mänskligt läsbart namn för uppgiften. |
enabled |
booleskt | Om den här aktiviteten ska köras när jobbet körs. |
env |
snöre | Variabler som ska mappas till processmiljön med namn/värde-par. |
name |
snöre | ID för steget. |
retryCountOnTaskFailure |
snöre | Antal återförsök om aktiviteten misslyckas. |
target |
snöre | Miljö för att köra den här uppgiften i. |
timeoutInMinutes |
snöre | Den maximala tid som aktiviteten kan köras innan den avbryts automatiskt. |
Villkor
En uppgift kan inte avgöra om pipelinejobbet ska fortsätta när aktiviteten har slutförts, utan endast ange en slutstatus som succeeded eller failed. Underordnade aktiviteter och jobb kan sedan ange en condition baserat på den statusen för att avgöra om den ska köras.
Villkorsegenskapen anger under vilka villkor aktiviteten körs. Som standard körs ett steg om inget i jobbet misslyckades ännu och steget omedelbart före det slutfördes.
Du kan åsidosätta eller anpassa dessa standardvärden genom att ange att steget ska köras även om eller bara om ett tidigare beroende misslyckas eller har ett annat resultat. Du kan också definiera anpassade villkor som består av uttryck.
Anteckning
Villkor gäller för alla tidigare direkta och indirekta beroenden med samma agentpool. Faser eller jobb i olika agentpooler körs samtidigt.
Villkor som baseras på tidigare beroendestatus är:
-
Lyckades: Kör endast om alla tidigare beroenden lyckas. Det här beteendet är standard om inget villkor anges i YAML. Om du vill tillämpa det här villkoret anger du
condition: succeeded(). -
Lyckades eller misslyckades: Kör även om ett tidigare beroende misslyckas, såvida inte körningen avbryts. Om du vill tillämpa det här villkoret anger du
condition: succeededOrFailed(). -
Alltid: Kör även om ett tidigare beroende misslyckas, även om körningen avbryts. Om du vill tillämpa det här villkoret anger du
condition: always(). -
Misslyckades: Kör endast när ett tidigare beroende misslyckas. Om du vill tillämpa det här villkoret anger du
condition: failed().
I följande YAML-exempel PublishTestResults@2 körs även om föregående steg misslyckades på grund av dess succeededOrFailed-villkor .
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
architecture: 'x64'
- task: PublishTestResults@2
inputs:
testResultsFiles: "**/TEST-*.xml"
condition: succeededOrFailed()
Fortsätt vid fel
Egenskapen continueOnError anger om aktiviteten ska fortsätta köras och rapportera lyckade resultat oavsett fel. Om värdet är anger trueden här egenskapen att aktiviteten ska ignorera en failed status och fortsätta att köras. Underordnade steg och jobb behandlar aktivitetsresultatet som success när de fattar sina körningsbeslut.
Aktiverat
Som standard körs aktiviteten när jobbet körs. Du kan ange enabled att false aktiviteten ska inaktiveras. Att tillfälligt inaktivera uppgiften är användbart för att ta bort uppgiften från processen i testsyfte eller för specifika distributioner.
Antal återförsök vid aktivitetsfel
Egenskapen retryCountOnTaskFailure anger hur många gånger aktiviteten ska försöka igen om den misslyckas. Standardvärdet är noll återförsök.
- Det maximala antalet återförsök som tillåts är 10.
- Väntetiden innan återförsöket ökar efter varje misslyckat försök, efter en exponentiell backoff-strategi. Det första återförsöket sker efter 1 sekund, det andra återförsöket efter 4 sekunder och det tionde återförsöket efter 100 sekunder.
- Att försöka utföra uppgiften igen ger inte idempotens. Biverkningar av det första försöket, till exempel att delvis skapa en extern resurs, kan leda till att återförsök misslyckas.
- Ingen information om antalet återförsök görs tillgänglig för aktiviteten.
- Aktivitetsfel lägger till en varning i aktivitetsloggarna som anger att den misslyckades innan aktiviteten försöker igen.
- Alla återförsök visas i användargränssnittet som en del av samma aktivitetsnod.
Anteckning
Egenskapen retryCountOnTaskFailure kräver agentversion 2.194.0 eller senare. På Azure DevOps Server 2022 stöds inte återförsök för agentlösa uppgifter. Mer information finns i Azure DevOps-tjänstuppdatering 16 november 2021 – Automatiska återförsök för en aktivitet och Azure DevOps-tjänstuppdatering 14 juni 2025 – Återförsök för serveruppgifter.
Target
Uppgifter körs i en körningskontext, vilket antingen är agentvärd eller en container. En uppgift kan åsidosätta kontexten genom att ange en target. Tillgängliga alternativ är host att rikta in sig på agentvärden och alla containrar som definierats i pipelinen. I följande exempel SampleTask@1 körs på värden och AnotherTask@1 körs i en container.
resources:
containers:
- container: pycontainer
image: python:3.11
steps:
- task: SampleTask@1
target: host
- task: AnotherTask@1
target: pycontainer
Timeout
Tidsgränsen börjar när aktiviteten börjar köras och inkluderar inte den tid då aktiviteten placeras i kö eller väntar på en agent.
Anteckning
Pipelines kan ange en tidsgräns för jobbnivå utöver en tidsgräns för aktivitetsnivå. Om tidsgränsintervallet på jobbnivå förflutit innan en aktivitet slutförs avslutas det jobb som körs, även om aktiviteten har konfigurerats med ett längre tidsgränsintervall. Mer information finns i Timeouter.
Miljövariabler
Du kan använda miljövariabler för att mappa system- eller användardefinierad information till aktivitetsprocessen.
En YAML-pipelineaktivitet kan ange en env egenskap som visar namn-/värdesträngar som representerar miljövariabler.
- task: AzureCLI@2
env:
ENV_VARIABLE_NAME: value
ENV_VARIABLE_NAME2: value
...
Du kan ange miljövariabler med hjälp script av steg eller med hjälp av skript i kommandorads-, Bash- eller PowerShell-uppgifter.
I följande exempel körs ett script steg som tilldelar ett värde till ENV_VARIABLE_NAME miljövariabeln och ekar värdet.
- script: echo "This is " $ENV_VARIABLE_NAME
env:
ENV_VARIABLE_NAME: value
displayName: 'echo environment variable'
Föregående skript fungerar på samma sätt som när du kör en Bash@3 uppgift med indata script . I följande exempel används syntaxen task .
- task: Bash@3
inputs:
script: echo "This is " $ENV_VARIABLE_NAME
env:
ENV_VARIABLE_NAME: value
displayName: 'echo environment variable'
Installationsuppgifter för build-verktyg
Installationsuppgifter för byggverktyget gör det möjligt för bygg-pipelinen att installera och kontrollera beroenden. Du kan använda installationsuppgifter för byggverktyget för att:
- Installera ett verktyg eller en körning för en version, inklusive på Microsoft-värdbaserade agenter.
- Verifiera din app eller ditt bibliotek mot flera versioner av ett beroende, till exempel Node.js.
En lista över verktygsinstallationsuppgifter finns i Verktygsuppgifter.
Exempel: Testa och verifiera en app på flera versioner av Node.js
I följande exempel konfigureras en bygg-pipeline för att köra och verifiera en app på flera versioner av Node.js.
Skapa en azure-pipelines.yml fil med följande innehåll i projektets baskatalog.
pool:
vmImage: 'windows-latest'
jobs:
- job: NodeJS
strategy:
matrix:
node14:
nodeVersion: '14.x'
node16:
nodeVersion: '16.x'
maxParallel: 2
steps:
- task: NodeTool@0
displayName: 'Install Node.js $(nodeVersion)'
inputs:
versionSpec: '$(nodeVersion)'
checkLatest: true
- script: |
echo Using Node version $(nodeVersion)
node --version
displayName: 'Verify Node Installation'
Spara och kör pipelinen. Jobbet körs två gånger, en för varje version av Node.js som du angav i variabeln nodeVersion .
Installationsprogrammet för Node.js-verktyget laddar ned den Node.js versionen om den inte redan finns på agenten. Kommandoradsskriptet skriver den installerade versionen till kommandoraden.
Relaterat innehåll
Hjälp och support
- Utforska felsökningstips.
- Få råd om Stack Overflow.
- Publicera dina frågor, sök efter svar eller föreslå en funktion i Azure DevOps Developer Community.
- Få support för Azure DevOps.