Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
In dit artikel wordt de volgorde uitgelegd van activiteiten in Pijplijnuitvoeringen in Azure Pipelines. Een uitvoering vertegenwoordigt één uitvoering van een pijplijn. Zowel CI-pijplijnen (continue integratie) als CD-pijplijnen (continue levering) bestaan uit uitvoeringen. Tijdens een uitvoering verwerkt Azure Pipelines de pijplijn en agents een of meer taken, stappen en taken.
Azure Pipelines voor elke uitvoering:
- Verwerkt de pijplijn
- Vraagt een of meer agents om taken uit te voeren
- Taken aan agents afleveren en de resultaten verzamelen
Voor elke taak, een agent:
- Bereidt zich voor op de taak
- Het voert elke stap in de taak uit.
- Resultaten van rapporten
Taken kunnen slagen, mislukken, worden geannuleerd of niet worden voltooid. Als u deze resultaten begrijpt, kunt u problemen oplossen.
In de volgende secties wordt het pijplijnuitvoeringsproces uitgebreid beschreven.
Pijplijnverwerking
Als u een pijplijn voor een uitvoering wilt verwerken, moet u eerst Azure Pipelines:
- Hiermee worden sjablonen uitgevouwen en sjabloonexpressies geëvalueerd.
- Evalueert afhankelijkheden op faseniveau om de eerste fase te kiezen die moet worden uitgevoerd.
Voor elke fase die wordt geselecteerd om uit te voeren, Azure Pipelines:
- Verzamelt en valideert alle taakbronnen voor autorisatie om uit te voeren.
- Evalueert afhankelijkheden op taakniveau om de eerste taak te kiezen die moet worden uitgevoerd.
Azure Pipelines voert de volgende activiteiten uit voor elke taak die wordt geselecteerd om uit te voeren:
- Hiermee breidt u YAML
strategy: matrixofstrategy: parallelmeerdere configuraties uit naar meerdere runtimetaken. - Evalueert voorwaarden om te bepalen of de taak in aanmerking komt voor uitvoering.
- Vraagt een agent aan voor elke in aanmerking komende taak.
Wanneer runtimetaken zijn voltooid, controleert Azure Pipelines of er nieuwe taken in aanmerking komen voor uitvoering. Zodra de fasen zijn voltooid, controleert Azure Pipelines of er meer fasen zijn.
Variabelen
Als u de verwerkingsvolgorde begrijpt, wordt uitgelegd waarom u bepaalde variabelen niet kunt gebruiken in sjabloonparameters. De eerste stap voor sjabloonuitbreiding werkt alleen op de tekst van het YAML-bestand. Runtimevariabelen bestaan nog niet tijdens die stap. Na deze stap zijn sjabloonparameters al opgelost.
U kunt geen variabelen gebruiken om serviceverbindings- of omgevingsnamen op te lossen, omdat de pijplijn resources autoriseert voordat een fase wordt uitgevoerd. Variabelen op fase- en taakniveau zijn nog niet beschikbaar. Variabelegroepen zijn zelf een resource die is onderworpen aan autorisatie, zodat hun gegevens niet beschikbaar zijn bij het controleren van resourceautorisatie.
U kunt variabelen op pijplijnniveau gebruiken die expliciet zijn opgenomen in de definitie van de pijplijnresource. Zie Metagegevens van pijplijnresources als vooraf gedefinieerde variabelen voor meer informatie.
Agenten
Azure Pipelines vraagt een agent van de pool aan om een taak uit te voeren. Het proces verschilt voor door Microsoft gehoste en zelf-hostende agentpools.
Notitie
Servertaken gebruiken geen pool omdat ze worden uitgevoerd op de Azure Pipelines-server zelf.
Parallelle taken
Ten eerste controleert Azure Pipelines op de parallelle taken van uw organisatie. De service telt alle actieve taken op alle agents op en vergelijkt dat met het aantal parallelle taken dat is verleend of aangeschaft.
Als er geen parallelle sites beschikbaar zijn, moet de taak wachten op een site om vrij te maken. Zodra een parallelle site beschikbaar is, wordt de taak gerouteerd naar het juiste agenttype.
Door Microsoft gehoste agents
De door Microsoft gehoste pool is conceptueel één globale pool van machines, maar deze is fysiek onderverdeeld in meerdere pools op geografie en besturingssysteemtype. Op basis van de aangevraagde naam van de YAML vmImage - of klassieke editorgroep selecteert Azure Pipelines een agent.
Alle agents in de Microsoft-pool zijn nieuwe, nieuwe virtuele machines (VM's) die nooit pijplijnen hebben uitgevoerd. Wanneer de taak is voltooid, wordt de agent-VM verwijderd.
Zelf-hostende agents
Zodra een parallelle site beschikbaar is, onderzoekt Azure Pipelines de zelf-hostende pool voor een compatibele agent. Zelf-hostende agents bieden mogelijkheden, wat aangeeft dat bepaalde software is geïnstalleerd of instellingen zijn geconfigureerd. De pijplijn heeft vereisten. Dit zijn de mogelijkheden die nodig zijn om de taak uit te voeren.
Als Azure Pipelines geen gratis agent kan vinden waarvan de mogelijkheden overeenkomen met de vereisten van de pijplijn, blijft de taak wachten. Als er geen agents in de pool staan waarvan de mogelijkheden overeenkomen met de vereisten, mislukt de taak.
Zelf-hostende agents worden meestal opnieuw gebruikt van uitvoering tot uitvoering. Voor zelf-hostende agents kan een pijplijntaak bijwerkingen hebben, zoals het opwarmen van caches of het hebben van de meeste doorvoeringen die al beschikbaar zijn in de lokale opslagplaats.
Jobvoorbereiding
Zodra een agent een taak accepteert, wordt de volgende voorbereiding uitgevoerd:
- Hiermee downloadt u alle taken die nodig zijn om de taak uit te voeren en slaat u ze in de cache op voor toekomstig gebruik.
- Hiermee maakt u schijfruimte voor het opslaan van de broncode, artefacten en uitvoer die in de uitvoering wordt gebruikt.
Stapuitvoering
De agent voert stappen opeenvolgend uit. Voordat een stap begint, moeten alle vorige stappen worden voltooid of overgeslagen.
Stappen worden geïmplementeerd door taken, die kunnen worden Node.js, PowerShell of andere scripts. Het taaksysteem routeert invoer en uitvoer naar de backingscripts. Taken bieden ook algemene services, zoals het wijzigen van het systeempad en het maken van nieuwe pijplijnvariabelen.
Elke stap wordt uitgevoerd in een eigen proces, waarbij de omgeving wordt geïsoleerd van de vorige stappen. Vanwege dit proces-per-stapmodel blijven omgevingsvariabelen niet behouden tussen stappen. Taken en scripts kunnen echter een mechanisme gebruiken dat logboekregistratieopdrachten wordt genoemd om terug te communiceren met de agent. Wanneer een taak of script een logboekregistratieopdracht naar standaarduitvoer schrijft, voert de agent elke actie uit die door de opdracht wordt aangevraagd.
U kunt een logboekregistratieopdracht gebruiken om nieuwe pijplijnvariabelen te maken. Pijplijnvariabelen worden in de volgende stap automatisch geconverteerd naar omgevingsvariabelen. Een script kan een nieuwe variabele myVar met de volgende waarde myValue instellen:
echo '##vso[task.setVariable variable=myVar]myValue'
Write-Host "##vso[task.setVariable variable=myVar]myValue"
Resultaatrapportage en -verzameling
Elke stap kan waarschuwingen, fouten en fouten rapporteren. De stap rapporteert fouten en waarschuwingen op de overzichtspagina van de pijplijn door de taken te markeren als voltooid met problemen of rapporteert fouten door de taak als mislukt te markeren. Een stap mislukt als er expliciet een fout wordt gerapporteerd met behulp van een ##vso opdracht of het script wordt beëindigd met een niet-nul-afsluitcode.
Als de stappen worden uitgevoerd, verzendt de agent voortdurend uitvoerlijnen naar Azure Pipelines, zodat u een livefeed van de console kunt zien. Aan het einde van elke stap wordt de volledige uitvoer van de stap geüpload als een logboekbestand. U kunt het logboek downloaden zodra de pijplijn is voltooid.
De agent kan ook artefacten en testresultaten uploaden, die ook beschikbaar zijn nadat de pijplijn is voltooid.
Status en voorwaarden
De agent houdt het succes of de mislukking van elke stap bij. Wanneer de stappen slagen of mislukken vanwege problemen, wordt de status van de taak bijgewerkt. De taak weerspiegelt altijd het slechtste resultaat van elk van de stappen. Als een stap mislukt, mislukt de taak ook.
Voordat de agent een stap uitvoert, controleert deze de voorwaarde van die stap om te bepalen of de stap moet worden uitgevoerd. Standaard wordt een stap alleen uitgevoerd wanneer de status van de taak is geslaagd of geslaagd met problemen, maar u kunt andere voorwaarden instellen.
Veel taken hebben opschoningsstappen die moeten worden uitgevoerd, ongeacht wat er nog meer gebeurt, zodat ze een voorwaarde van always(). Opschonen of andere stappen kunnen ook worden ingesteld om alleen te worden uitgevoerd bij annulering.
Met een geslaagde opschoningsstap wordt de taak niet gered van mislukken. Taken kunnen niet terugkeren naar succes nadat ze zijn mislukt.
Time-outs en verbroken verbindingen
Elke taak heeft een time-out. Als de taak niet binnen de opgegeven tijd wordt voltooid, annuleert de server de taak. De server probeert de agent te signaleren om te stoppen en markeert de taak als geannuleerd. Aan de zijde van de agent betekent annulering dat u alle resterende stappen annuleert en eventuele resterende resultaten uploadt.
Taken hebben een respijtperiode genaamd de time-out voor annuleren waarin alle annuleringswerkzaamheden moeten worden voltooid. U kunt ook stappen markeren om zelfs bij annulering te worden uitgevoerd. Na een time-out voor een taak plus een time-out voor annuleren, als de agent niet rapporteert dat het werk is gestopt, markeert de server de taak als een fout.
Agentcomputers kunnen stoppen met reageren op de server als de hostcomputer van de agent stroom verliest of is uitgeschakeld, of als er een netwerkfout optreedt. Om deze voorwaarden te detecteren, verzendt de agent eenmaal per minuut een heartbeat-bericht om de server te laten weten dat deze nog steeds werkt.
Als de server vijf opeenvolgende minuten geen heartbeat ontvangt, wordt ervan uitgegaan dat de agent niet terugkomt. De taak is gemarkeerd als een fout, zodat de gebruiker weet dat hij of zij de pijplijn opnieuw moet proberen.
Uitvoeringen beheren via de Azure DevOps CLI
U kunt pijplijnuitvoeringen beheren met behulp van az pipelines-uitvoeringen in de Azure DevOps CLI. Zie Aan de slag met Azure DevOps CLI om aan de slag te gaan. Zie azure DevOps CLI-opdrachtreferentie voor een volledige naslaginformatie over opdrachten.
In de volgende voorbeelden ziet u hoe u de Azure DevOps CLI gebruikt om de pijplijnuitvoeringen in uw project weer te geven, details over een specifieke uitvoering weer te geven en tags voor pijplijnuitvoeringen te beheren.
Vereisten
- Azure CLI met de Azure DevOps CLI-extensie geïnstalleerd zoals beschreven in Aan de slag met Azure DevOps CLI. Meld u aan bij Azure met behulp van
az login. - De standaardorganisatie die is ingesteld met behulp van
az devops configure --defaults organization=<YourOrganizationURL>.
Pijplijnuitvoeringen vermelden
Vermeld de pijplijnuitvoeringen in uw project met de opdracht az pipelines runs list .
Met deze opdracht worden de eerste drie pijplijndraaien met de status voltooid en het resultaat geslaagd weergegeven en wordt het resultaat in tabelvorm getoond.
az pipelines runs list --status completed --result succeeded --top 3 --output table
Run ID Number Status Result Pipeline ID Pipeline Name Source Branch Queued Time Reason
-------- ---------- --------- --------- ------------- -------------------------- --------------- -------------------------- ------
125 20200124.1 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 18:56:10.067588 manual
123 20200123.2 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 11:55:56.633450 manual
122 20200123.1 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 11:48:05.574742 manual
Details van pijplijnuitvoering weergeven
Geef de details weer voor een pijplijnuitvoering in uw project met de opdracht az pipelines runs show .
Met deze opdracht worden details weergegeven voor de pijplijnuitvoering met id 123, worden de resultaten in tabelindeling weergegeven en wordt uw webbrowser geopend op de pagina met buildresultaten van Azure Pipelines.
az pipelines runs show --id 122 --open --output table
Run ID Number Status Result Pipeline ID Pipeline Name Source Branch Queued Time Reason
-------- ---------- --------- --------- ------------- -------------------------- --------------- -------------------------- --------
123 20200123.2 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 11:55:56.633450 manual
Tag toevoegen aan pijplijnuitvoering
Voeg een tag toe aan een pijplijnuitvoering in uw project met de opdracht az pipelines runs tag add .
Met de volgende opdracht wordt de tag YAML toegevoegd aan de pijplijnuitvoering met de id 123 en wordt het resultaat in JSON-indeling geretourneerd.
az pipelines runs tag add --run-id 123 --tags YAML --output json
[
"YAML"
]
Tags voor pijplijnuitvoering vermelden
Vermeld de tags voor een pijplijnuitvoering in uw project met de opdracht az pipelines runs tag list . De volgende opdracht bevat de tags voor de pijplijnuitvoering met de id 123 en retourneert het resultaat in tabelindeling.
az pipelines runs tag list --run-id 123 --output table
Tags
------
YAML
Tag verwijderen uit pijplijnuitvoering
Verwijder een tag uit een pijplijnuitvoering in uw project met behulp van de opdracht az pipelines runs tag delete . Met deze opdracht verwijdert u de YAML-tag uit de pijplijnuitvoering met id 123.
az pipelines runs tag delete --run-id 123 --tag YAML
Uitvoeringen beheren met de Azure DevOps MCP-server
U kunt pijplijnuitvoeringen beheren in Copilot met de Azure DevOps MCP-server. Zie Hulp bij AI inschakelen met Azure DevOps MCP Server om aan de slag te gaan.
Pijplijnuitvoeringen vermelden
Vermeld de pijplijnuitvoeringen voor een bepaalde pijplijn.
Show the three most recent runs for the Tailspin pipeline.
Deze prompt geeft de laatste drie pijplijnuitvoeringen weer met een link om elke uitvoering te bekijken.
Details van pijplijnuitvoering weergeven
Haal de status van een specifieke build op.
Show the status and details for build 12345678.9.
Deze prompt retourneert de status, het resultaat, de begin- en eindtijd en de samenvatting voor een build.
Een nieuwe pijplijnuitvoering starten
Begin een nieuwe uitvoering van een pijplijn.
Start the Tailspin pipeline and provide a direct link to the run, including the project name in the URL.
Met deze prompt wordt uw pijplijn gestart en krijgt u een koppeling naar de pijplijnrun.