Agenter i Azure-pipelines
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Om du vill skapa din kod eller distribuera din programvara med Hjälp av Azure Pipelines behöver du minst en agent. När din kodbas och ditt team växer behöver du fler agenter.
När pipelinen körs börjar systemet ett eller flera jobb. En agent är databehandlingsinfrastruktur med installerad agentprogramvara som kör ett jobb i taget.
Azure Pipelines innehåller flera olika typer av agenter.
Agenttyp | beskrivning | Tillgänglighet |
---|---|---|
Microsofts värdbaserade agenter | Agenter som hanteras och hanteras av Microsoft | Azure DevOps Services |
Lokala agenter | Agenter som du konfigurerar och hanterar, som finns på dina virtuella datorer | Azure DevOps Services, Azure DevOps Server |
Skalningsuppsättningsagenter för virtuella Azure-datorer | En form av lokalt installerade agenter som använder Skalningsuppsättningar för virtuella Azure-datorer som kan skalas automatiskt för att uppfylla kraven | Azure DevOps Services |
Jobb kan köras direkt på värddatorn för agenten eller i en container.
Microsofts värdbaserade agenter
Om dina pipelines finns i Azure Pipelines har du ett praktiskt alternativ för att köra dina jobb med hjälp av en Microsoft-värdbaserad agent. Med Microsoft-värdbaserade agenter slipper du själv genomföra underhåll och uppgraderingar. Du får alltid den senaste versionen av den virtuella datoravbildningen som du anger i din pipeline. Varje gång du kör en pipeline får du en ny virtuell dator för varje jobb i pipelinen. Den virtuella datorn tas bort efter ett jobb (vilket innebär att alla ändringar som ett jobb gör i filsystemet för den virtuella datorn, till exempel att checka ut kod, inte är tillgängliga för nästa jobb). Microsoft-värdbaserade agenter kan köra jobb direkt på den virtuella datorn eller i en container.
Azure Pipelines tillhandahåller en fördefinierad agentpool med namnet Azure Pipelines med Microsoft-värdbaserade agenter.
För många team är det här det enklaste sättet att köra dina jobb. Du kan prova det först och se om det fungerar för din version eller distribution. Annars kan du använda skalningsuppsättningsagenter eller en lokalt installerad agent.
Dricks
Du kan prova en Microsoft-värdbaserad agent utan kostnad.
Lokala agenter
En agent som du konfigurerar och hanterar på egen hand för att köra jobb är en lokalt installerad agent. Du kan använda lokalt installerade agenter i Azure Pipelines eller Azure DevOps Server, tidigare kallad Team Foundation Server (TFS). Lokalt installerade agenter ger dig mer kontroll över installationen av beroende programvara som behövs för dina byggen och distributioner. Cacheminnen på datornivå och konfiguration finns kvar från körning till körning, vilket kan öka hastigheten.
Kommentar
Även om flera agenter kan installeras per dator rekommenderar vi starkt att du bara installerar en agent per dator. Att installera två eller flera agenter kan påverka prestanda och resultatet av dina pipelines negativt.
Dricks
Innan du installerar en lokalt installerad agent kanske du vill se om en Microsoft-värdbaserad agentpool fungerar åt dig. I många fall är detta det enklaste sättet att komma igång. Ge det ett försök.
Du kan installera agenten på Linux-, macOS- eller Windows-datorer. Du kan också installera en agent på en Docker-container. Mer information om hur du installerar en lokalt installerad agent finns i:
Kommentar
På macOS måste du rensa det särskilda attributet i nedladdningsarkivet för att förhindra att Gatekeeper-skyddet visas för varje sammansättning i tar-filen när ./config.sh
den körs. Följande kommando rensar det utökade attributet för filen:
xattr -c vsts-agent-osx-x64-V.v.v.tar.gz ## replace V.v.v with the version in the filename downloaded.
# then unpack the gzip tar file normally:
tar xvfz vsts-agent-osx-x64-V.v.v.tar.gz
När du har installerat agenten på en dator kan du installera annan programvara på den datorn efter behov av dina jobb.
Kommentar
Agenter är mycket bakåtkompatibla. Alla versioner av agenten ska vara kompatibla med valfri Azure DevOps-version så länge Azure DevOps inte kräver en högre version av agenten.
Vi stöder bara den senaste versionen av agenten eftersom det är den enda versionen som garanterat har alla uppdaterade korrigeringar och felkorrigeringar.
Node runner-versioner
Agenten levereras med flera versioner av NodeJS-bibliotek för att stödja måluppgifter som använder olika Nodhanterare.
Alla officiella Azure DevOps-uppgifter använder Node 20 som universell hanterare, men kunder kan fortfarande använda anpassade uppgifter som använder nod 6-, nod 10- eller nod 16-biblioteken i slutet av livet. För att stödja bakåtkompatibilitet med Node som för närvarande har nått End-of-Life tillhandahåller vi följande självbetjäningsmetoder för att installera den avsedda Node-löparen manuellt.
Installera Node 6-löparen manuellt. Mer information om hur du installerar Node 6-löparen manuellt finns i Stöd för Nod 6 för mer information.
Använd den NodeTaskRunnerInstaller@0 uppgiften i dina pipelines som kräver det inaktuella Node 6-biblioteket.
Installera ett agentpaket som innehåller Nod 6.
Azure Pipelines innehåller två versioner av agentpaket.
- vsts-agent-* paket stöder Node 6.
- pipelines-agent-* paket stöder inte Node 6. Den här versionen av paketet blir standardagentpaketet i framtiden.
Om du vet att du inte använder nod 6-beroende uppgifter och du inte vill att Node 6 ska installeras på agentdatorn kan du installera agenten från avsnittet Alternativa agentnedladdningar från https://github.com/microsoft/azure-pipelines-agent/releases.
Skalningsuppsättningsagenter för virtuella Azure-datorer
Azure Virtual Machine Scale Set-agenter är en form av lokalt installerade agenter som kan skalas automatiskt för att uppfylla dina krav. Den här elasticiteten minskar behovet av att köra dedikerade agenter hela tiden. Till skillnad från Microsoft-hostade agenter har du möjlighet att bestämma storleken på och bilden av de datorer som agenterna körs på.
Du anger en vm-skalningsuppsättning, antalet agenter som ska hållas i vänteläge, ett maximalt antal virtuella datorer i skalningsuppsättningen och Azure Pipelines hanterar skalningen av dina agenter åt dig.
Mer information finns i Azure Virtual Machine Scale Set-agenter.
Parallella jobb
Parallella jobb representerar antalet jobb som du kan köra samtidigt i din organisation. Om din organisation har ett enda parallellt jobb kan du köra ett enda jobb i taget i din organisation, med andra samtidiga jobb i kö tills det första jobbet har slutförts. Om du vill köra två jobb samtidigt behöver du två parallella jobb. I Azure Pipelines kan du köra parallella jobb i Microsoft-värdbaserad infrastruktur eller på egen (lokalt installerad) infrastruktur.
Microsoft tillhandahåller som standard en kostnadsfri tjänstnivå i varje organisation som innehåller minst ett parallellt jobb. Beroende på antalet samtidiga pipelines som du behöver köra kan du behöva fler parallella jobb för att använda flera Microsoft-värdbaserade eller lokalt installerade agenter samtidigt. Mer information om parallella jobb och olika kostnadsfria tjänstnivåer finns i Parallella jobb i Azure Pipelines.
Du kan behöva fler parallella jobb för att använda flera agenter samtidigt:
Viktigt!
Från och med Azure DevOps Server 2019 behöver du inte betala för samtidiga jobb med egen värd i versioner. Du begränsas bara av antalet agenter som du har.
Funktioner
Varje lokalt installerad agent har en uppsättning funktioner som anger vad den kan göra. Funktioner är namn/värde-par som antingen identifieras automatiskt av agentprogramvaran, så kallade systemfunktioner eller funktioner som du definierar, så kallade användarfunktioner.
Agentprogramvaran avgör automatiskt olika systemfunktioner, till exempel datorns namn, typ av operativsystem och versioner av viss programvara som är installerad på datorn. Miljövariabler som definierats på datorn visas också automatiskt i listan över systemfunktioner.
Kommentar
Lagring av miljövariabler som funktioner innebär att när en agent körs används de lagrade kapacitetsvärdena för att ange miljövariablerna. Ändringar i miljövariabler som görs medan agenten körs hämtas inte och används inte av någon uppgift. Om du har känsliga miljövariabler som ändras och du inte vill att de ska lagras som funktioner kan du låta dem ignoreras genom att ange VSO_AGENT_IGNORE
miljövariabeln, med en kommaavgränsad lista med variabler att ignorera. Är till exempel PATH
en kritisk variabel som du kanske vill ignorera om du installerar programvara.
När du skapar en pipeline anger du vissa krav för agenten. Systemet skickar jobbet endast till agenter som har funktioner som matchar de krav som anges i pipelinen. Därför kan du med agentfunktioner dirigera jobb till specifika agenter.
Kommentar
Krav och funktioner är utformade för användning med lokalt installerade agenter så att jobb kan matchas med en agent som uppfyller kraven för jobbet. När du använder Microsoft-värdbaserade agenter väljer du en avbildning för agenten som matchar kraven för jobbet, så även om det är möjligt att lägga till funktioner i en Microsoft-värdbaserad agent behöver du inte använda funktioner med Microsoft-värdbaserade agenter.
Konfigurera krav
Lägg till raden i demands:
avsnittet om du vill lägga till ett krav i yaml-bygg-pipelinen pool
.
pool:
name: Default
demands: SpecialSoftware # exists check for SpecialSoftware
Du kan kontrollera om det finns en funktion eller göra en jämförelse med värdet för en funktion. Mer information finns i YAML-schema – Krav.
Konfigurera agentfunktioner
Du kan visa information om en agent, inklusive dess version och systemfunktioner, och hantera dess användarfunktioner genom att gå till Agentpooler och välja fliken Funktioner för den önskade agenten.
I webbläsaren går du till Agentpooler:
Logga in på din organisation (
https://dev.azure.com/{yourorganization}
).Välj Azure DevOps, Organisationsinställningar.
Välj Agentpooler.
Logga in på din projektsamling (
http://your-server/DefaultCollection
).Välj Azure DevOps, samlingsinställningar.
Välj Agentpooler.
Välj Azure DevOps, samlingsinställningar.
Välj Agentpooler.
Gå till fliken Funktioner:
På fliken Agentpooler väljer du önskad agentpool.
Välj Agenter och välj önskad agent.
Välj fliken Funktioner .
Kommentar
Microsoft-värdbaserade agenter visar inte systemfunktioner. En lista över programvara som är installerad på Microsoft-värdbaserade agenter finns i Använda en Microsoft-värdbaserad agent.
Välj önskad pool på fliken Agentpooler .
Välj Agenter och välj önskad agent.
Välj fliken Funktioner .
Välj önskad pool på fliken Agentpooler .
Välj Agenter och välj önskad agent.
Välj fliken Funktioner .
Om du vill registrera en ny funktion med agenten väljer du Lägg till en ny funktion.
Dricks
När du har installerat ny programvara på en lokalt installerad agent måste du starta om agenten för att den nya funktionen ska visas. Mer information finns i Starta om Windows-agenten, Starta om Linux-agenten och Starta om Mac-agenten.
Kommunikation
Kommunikation med Azure Pipelines
Kommunikation med Azure DevOps Server
Agenten kommunicerar med Azure Pipelines eller Azure DevOps Server för att avgöra vilket jobb som ska köras och för att rapportera loggar och jobbstatus. Agenten initierar alltid den här kommunikationen. Alla meddelanden från agenten till Azure Pipelines eller Azure DevOps Server ske via HTTP eller HTTPS, beroende på agentens konfiguration. Med den här pull-modellen kan agenten konfigureras i olika topologier, vilket visas i följande exempel.
Här är ett vanligt kommunikationsmönster mellan agenten och Azure Pipelines eller Azure DevOps Server.
Användaren registrerar en agent med Azure Pipelines eller Azure DevOps Server genom att lägga till den i en agentpool. Du måste vara administratör för agentpoolen för att kunna registrera en agent i agentpoolen. Identiteten för agentpoolsadministratören behövs endast vid tidpunkten för registreringen och sparas inte på agenten. Det används inte i någon ytterligare kommunikation mellan agenten och Azure Pipelines eller Azure DevOps Server. När registreringen är klar laddar agenten ned en OAuth-lyssnartoken och använder den för att lyssna på jobbkön.
Agenten lyssnar för att se om en ny jobbbegäran har publicerats för den i jobbkön i Azure Pipelines/Azure DevOps Server med hjälp av en HTTP-lång omröstning. När ett jobb är tillgängligt laddar agenten ned jobbet och en jobbspecifik OAuth-token. Azure Pipelines/Azure DevOps Server genererar en kortlivad token för den begränsade identitet som anges i pipelinen. Token används av agenten för att komma åt eller ändra resurser på Azure Pipelines eller Azure DevOps Server i det jobbet. Till exempel för att komma åt källkod eller ladda upp testresultat.
Agenten tar bort den jobbspecifika OAuth-token när jobbet har slutförts och går sedan tillbaka till att kontrollera om det finns en ny jobbbegäran med lyssnarens OAuth-token.
Nyttolasten i de meddelanden som utbyts mellan agenten och Azure Pipelines/Azure DevOps Server säkras med asymmetrisk kryptering. Varje agent har ett offentligt-privat nyckelpar och den offentliga nyckeln utbyts med servern under registreringen. Servern använder den offentliga nyckeln för att kryptera nyttolasten för jobbet innan den skickas till agenten. Agenten dekrypterar jobbinnehållet med hjälp av den privata nyckeln. Den här metoden skyddar hemligheter som lagras i pipelines eller variabelgrupper när de utbyts med agenten.
Kommentar
Agenten har stöd för UTF-8-klientkodningsutdata. Men om systemet har en annan kodning än UTF-8 kan det uppstå vissa problem med utdata från loggar. Loggarna kan till exempel innehålla tecken som inte känns igen av systemets kodning så att de kan visas som förvrängda eller saknade symboler.
Kommunikation för distribution till målservrar
När du använder agenten för att distribuera artefakter till en uppsättning servrar måste den ha "synlig" anslutning till dessa servrar. Microsofts värdbaserade agentpooler har som standard anslutning till Azure-webbplatser och -servrar som körs i Azure.
Kommentar
Om dina Azure-resurser körs i ett virtuellt Azure-nätverk kan du hämta agent-IP-intervallen där Microsoft-värdbaserade agenter distribueras så att du kan konfigurera brandväggsreglerna för ditt virtuella Azure-nätverk så att agenten tillåter åtkomst.
Om dina lokala miljöer inte har anslutning till en Microsoft-värdbaserad agentpool, vilket vanligtvis beror på mellanliggande brandväggar, måste du manuellt konfigurera lokalt installerade agenter på lokala datorer. Agenterna måste ha anslutning till de lokala målmiljöerna och åtkomst till Internet för att ansluta till Azure Pipelines eller Team Foundation Server, enligt följande schema.
Autentisering
Om du vill registrera en agent måste du vara medlem i administratörsrollen i agentpoolen. Identiteten för agentpoolsadministratören behövs endast vid tidpunkten för registreringen och sparas inte på agenten. Den används inte i någon efterföljande kommunikation mellan agenten och Azure Pipelines eller Azure DevOps Server. Dessutom måste du vara lokal administratör på servern för att kunna konfigurera agenten.
När du registrerar en agent väljer du mellan följande autentiseringstyper, och agentkonfigurationen uppmanar dig att ange den specifika ytterligare information som krävs för varje autentiseringstyp. Mer information finns i autentiseringsalternativ för lokalt installerad agent.
- Personlig åtkomsttoken
- Alternativ Anslut till Azure DevOps Server eller TFS med grundläggande autentisering. När du väljer Alternativ uppmanas du att ange dina autentiseringsuppgifter.
Dessutom har Windows-agenter följande två autentiseringsalternativ på Azure DevOps Server.
- Förhandla om att ansluta till Azure DevOps Server som en annan användare än den inloggade användaren via ett Windows-autentiseringsschema, till exempel NTLM (New Technology LAN Manager) eller Kerberos. När du har valt Förhandla uppmanas du att ange autentiseringsuppgifter.
- Integrerad (standard) Anslut en Windows-agent till Azure DevOps Server med autentiseringsuppgifterna för den inloggade användaren via ett Windows-autentiseringsschema som NTLM eller Kerberos. Du uppmanas inte att ange autentiseringsuppgifter när du har valt den här metoden.
Viktigt!
Servern måste vara konfigurerad för att stödja autentiseringsmetoden för att använda alternativ, förhandla eller integrerad autentisering.
Autentiseringsmetoden som används för att registrera agenten används endast under agentregistreringen. Mer information om hur agenter kommunicerar med Azure Pipelines efter registreringen finns i Kommunikation med Azure Pipelines eller Azure DevOps Server.
Interaktiv vs tjänst
Du kan köra din lokalt installerade agent som antingen en tjänst eller en interaktiv process.
När du har konfigurerat agenten rekommenderar vi att du först provar den i interaktivt läge för att se till att den fungerar. För produktionsanvändning rekommenderar vi sedan att du kör agenten i något av de följande lägena så att den på ett tillförlitligt sätt förblir i ett körningstillstånd. Dessa lägen ser också till att agenten startas automatiskt om datorn startas om.
Som en tjänst. Du kan använda tjänsthanteraren för operativsystemet för att hantera agentens livscykel. Dessutom är upplevelsen för automatisk uppgradering av agenten bättre när du kör agenten som en tjänst.
Som en interaktiv process med automatisk inloggning aktiverad. I vissa fall kan du behöva köra agenten interaktivt för produktionsanvändning, till exempel för att köra tester för användargränssnitt. När agenten är konfigurerad för att köras i det här läget inaktiveras även skärmsläckaren. Vissa domänprinciper kan hindra dig från att aktivera automatisk inloggning eller inaktivera skärmsläckaren. I sådana fall kan du behöva söka ett undantag från domänprincipen eller köra agenten på en arbetsgruppsdator där domänprinciperna inte gäller.
Kommentar
Det finns säkerhetsrisker när du aktiverar automatisk inloggning eller inaktiverar skärmsläckaren eftersom du gör det möjligt för andra användare att gå upp till datorn och använda det konto som automatiskt loggar in. Om du konfigurerar agenten så att den körs på det här sättet måste du se till att datorn är fysiskt skyddad. finns till exempel i en säker anläggning. Om du använder Fjärrskrivbord för att få åtkomst till den dator där en agent körs med automatisk inloggning kan det hända att datorn låses när fjärrskrivbordet stängs och alla användargränssnittstester som körs på den här agenten misslyckas. Undvik detta genom att använda tscon-kommandot för att koppla från Fjärrskrivbord. Till exempel:
%windir%\System32\tscon.exe 1 /dest:console
Agentkonto
Oavsett om du kör en agent som en tjänst eller interaktivt kan du välja vilket datorkonto du använder för att köra agenten. Valet av agentkonto beror enbart på behoven för de uppgifter som körs i dina bygg- och distributionsjobb.
Om du till exempel vill köra uppgifter med Windows-autentisering för att få åtkomst till en extern tjänst måste agenten köras med ett konto med åtkomst till den tjänsten. Men om du kör användargränssnittstester som Selenium- eller Coded UI-tester som kräver en webbläsare, startas webbläsaren i kontexten för agentkontot.
I Windows bör du överväga att använda ett tjänstkonto, till exempel nätverkstjänst eller lokal tjänst. Dessa kontobehörigheter är begränsade och deras lösenord upphör inte att gälla, vilket innebär att agenten kräver mindre hantering över tid.
Dessa autentiseringsuppgifter skiljer sig från de autentiseringsuppgifter som du använder när du registrerar agenten med Azure Pipelines eller Azure DevOps Server.
Agentversion och uppgraderingar
Vi uppdaterar agentprogramvaran med några veckors mellanrum i Azure Pipelines.
Vi anger agentversionen i formatet {major}.{minor}
.
Om agentversionen till exempel är 2.1
är 2
huvudversionen och delversionen är 1
.
Microsoft-värdbaserade agenter hålls alltid uppdaterade. Om den nyare versionen av agenten bara skiljer sig i mindre version kan Azure Pipelines automatiskt uppdatera lokalt installerade agenter. Du kan konfigurera den här inställningen i Agentpooler, välja din agent, Inställningar – standardinställningen är aktiverad. En uppgradering begärs när en plattformsfunktion eller någon av de uppgifter som används i pipelinen kräver en nyare version av agenten.
Om du kör en lokalt installerad agent interaktivt, eller om det finns en nyare huvudversion av agenten tillgänglig, kan du behöva uppgradera agenterna manuellt. Du kan enkelt uppgradera agenterna från fliken Agentpooler under din organisation. Pipelines kan inte köras utan en kompatibel agent
Så här uppdaterar du lokalt installerade agenter
Gå till Projektinställningar, Agentpooler.
Välj din agentpool och välj Uppdatera alla agenter.
Du kan också uppdatera agenter individuellt genom att välja Uppdatera agent från menyn ... .
Bekräfta uppdateringen genom att välja Uppdatera .
En uppdateringsbegäran placeras i kö för varje agent i poolen och körs när alla jobb som körs slutförs. Uppgraderingen tar vanligtvis bara en stund – tillräckligt lång tid för att ladda ned den senaste versionen av agentprogramvaran (cirka 200 MB), packa upp den och starta om agenten med den nya versionen. Du kan övervaka statusen för dina agenter på fliken Agenter .
Vi uppdaterar agentprogramvaran med varje uppdatering i Azure DevOps Server.
Vi anger agentversionen i formatet {major}.{minor}
.
Om agentversionen till exempel är 2.1
är huvudversionen 2 och delversionen är 1.
När din Azure DevOps Server har en nyare version av agenten och den nyare agenten bara skiljer sig i delversion kan den vanligtvis uppgraderas automatiskt. En uppgradering begärs när en plattformsfunktion eller någon av de uppgifter som används i pipelinen kräver en nyare version av agenten. Från och med Azure DevOps Server 2019 behöver du inte vänta på en ny serverversion. Du kan ladda upp en ny version av agenten till programnivån och den versionen erbjuds som en uppgradering.
Om du kör agenten interaktivt, eller om det finns en nyare huvudversion av agenten tillgänglig, kan du behöva uppgradera agenterna manuellt. Du kan enkelt uppgradera agenten från fliken Agentpooler under din projektsamling. Pipelines kan inte köras utan en kompatibel agent.
Du kan visa versionen av en agent genom att gå till Agentpooler och välja fliken Funktioner för önskad agent enligt beskrivningen i Konfigurera agentfunktioner.
Om du vill utlösa agentuppdatering programmatiskt kan du använda API för agentuppdatering enligt beskrivningen i avsnittet Hur utlöser jag agentuppdateringar programmatiskt för en specifik agentpool?.
Kommentar
För servrar utan internetåtkomst kopierar du manuellt zip-filen agent till följande mapp som ska användas som en lokal fil. Skapa mappen Agenter om den inte finns.
- Windows:
%ProgramData%\Microsoft\Azure DevOps\Agents
- Linux:
usr/share/Microsoft/Azure DevOps/Agents
- macOS:
usr/share/Microsoft/Azure DevOps/Agents
Skapa mappen Agenter om den inte finns.
Vanliga frågor
Hur ser jag till att jag har den senaste versionen av v2-agenten?
Gå till fliken Agentpooler :
Logga in på din organisation (
https://dev.azure.com/{yourorganization}
).Välj Azure DevOps, Organisationsinställningar.
Välj Agentpooler.
Logga in på din projektsamling (
http://your-server/DefaultCollection
).Välj Azure DevOps, samlingsinställningar.
Välj Agentpooler.
Välj Azure DevOps, samlingsinställningar.
Välj Agentpooler.
Klicka på poolen som innehåller agenten.
Kontrollera att agenten är aktiverad.
Gå till fliken Funktioner:
På fliken Agentpooler väljer du önskad agentpool.
Välj Agenter och välj önskad agent.
Välj fliken Funktioner .
Kommentar
Microsoft-värdbaserade agenter visar inte systemfunktioner. En lista över programvara som är installerad på Microsoft-värdbaserade agenter finns i Använda en Microsoft-värdbaserad agent.
Välj önskad pool på fliken Agentpooler .
Välj Agenter och välj önskad agent.
Välj fliken Funktioner .
Välj önskad pool på fliken Agentpooler .
Välj Agenter och välj önskad agent.
Välj fliken Funktioner .
Leta efter funktionen
Agent.Version
. Du kan kontrollera det här värdet mot den senaste publicerade agentversionen. Se Azure Pipelines-agenten och kontrollera sidan för det högsta versionsnumret i listan.Varje agent uppdateras automatiskt när den kör en uppgift som kräver en nyare version av agenten. Om du vill uppdatera vissa agenter manuellt högerklickar du på poolen och väljer Uppdatera alla agenter.
Kan jag uppdatera mina v2-agenter som ingår i en Azure DevOps Server-pool?
Ja. Från och med Azure DevOps Server 2019 kan du konfigurera servern så att den söker efter agentpaketfilerna på en lokal disk. Den här konfigurationen åsidosätter standardversionen som medföljer servern när den släpptes. Det här scenariot gäller även när servern inte har åtkomst till Internet.
Från en dator med Internetåtkomst laddar du ned den senaste versionen av agentpaketfilerna (i .zip eller .tar.gz formulär) från sidan Azure Pipelines Agent GitHub Releases.
Överför de nedladdade paketfilerna till varje Azure DevOps Server-programnivå med hjälp av valfri metod (till exempel USB-enhet, nätverksöverföring och så vidare). Placera agentfilerna
%ProgramData%\Microsoft\Azure DevOps\Agents
under mappen. Skapa mappen Agenter om den inte finns.Nu är det klart! Azure DevOps Server använder nu de lokala filerna när agenterna uppdateras. Varje agent uppdateras automatiskt när den kör en uppgift som kräver en nyare version av agenten. Men om du vill uppdatera vissa agenter manuellt högerklickar du på poolen och väljer sedan Uppdatera alla agenter.
Har lokalt installerade agenter några prestandafördelar jämfört med Microsoft-värdbaserade agenter?
Ja, i många fall. Specifikt:
Om du använder en lokalt installerad agent kan du köra inkrementella versioner. Om du till exempel definierar en pipeline som inte rensar lagringsplatsen och inte utför en ren version, körs dina versioner vanligtvis snabbare. Du får inte dessa fördelar med en Microsoft-värdbaserad agent om du inte använder funktioner som cachelagring eftersom agenten förstörs när pipelinen har slutförts.
Det kan ta längre tid att starta bygget av en Microsoft-värdbaserad agent. Det tar ofta bara några sekunder för jobbet att tilldelas till en Microsoft-värdbaserad agent, men det kan ibland ta flera minuter innan en agent allokeras beroende på belastningen på vårt system.
Kan jag installera flera lokalt installerade agenter på samma dator?
Ja. Den här metoden kan fungera bra för agenter som kör jobb som inte förbrukar många delade resurser. Du kan till exempel prova det för agenter som kör versioner som främst samordnar distributioner och inte utför mycket arbete på själva agenten.
Du kanske upptäcker att du i andra fall inte får mycket effektivitet genom att köra flera agenter på samma dator. Det kanske till exempel inte är värt något för agenter som kör versioner som förbrukar mycket disk- och I/O-resurser.
Du kan också stöta på problem om parallella byggjobb använder samma singleton-verktygsdistribution, till exempel npm-paket. En version kan till exempel uppdatera ett beroende medan en annan version är mitt uppe i att använda den, vilket kan orsaka otillförlitliga resultat och fel.
Vad är beteendet för agenter när pipelinejobben avbryts?
För Microsoft-värdbaserade agenter rivs agenten ner och returneras till Azure Pipelines-poolen.
För internt testade agenter:
När en pipeline avbryts skickar agenten en sekvens med kommandon till processen som kör det aktuella steget.
- Det första kommandot skickas med en tidsgräns på 7,5 sekunder.
- Om processen inte avslutas skickas ett andra kommando med en tidsgräns på 2,5 sekunder.
- Om processen inte avslutas kommer agenten att beordra att den avlivas.
- Om processen ignorerar de två inledande avslutsbegäranden avlivas den med två skäl.
Från den första begäran till avslutandet tar cirka 10 sekunder.
De kommandon som utfärdas till processen för att avbryta pipelinen skiljer sig beroende på agentoperativsystemet.
- macOS och Linux – Kommandona som skickas är SIGINT, följt av SIGTERM, följt av SIGKILL.
- Windows – Kommandona som skickas till processen är Ctrl+C, följt av Ctrl+Break följt av Process.Kill.
Hur utlöser jag agentuppdateringar programmatiskt för en specifik agentpool?
Du kan utlösa agentuppdateringar för poolen med hjälp av följande API:
POST https://dev.azure.com/{organization}/_apis/distributedtask/pools/{poolId}/messages?agentId={agentId}&api-version=6.0
POST https://{server url}/tfs/{collection}/_apis/distributedtask/pools/{poolId}/messages?agentId={agentId}&api-version=6.0
Kommentar
Mer information i API- och Azure DevOps Server-versionsmappning finns i API- och Azure DevOps Server-versionsmappning
URI-parametrar
Name | I | Obligatoriskt | Type | Beskrivning |
---|---|---|---|---|
agentId |
query | Falsk | sträng | Agenten som ska uppdateras. Om det inte anges utlöses uppdateringen för alla agenter. |
organization |
path | Sant | sträng | Namnet på Azure DevOps-organisationen. |
poolId |
path | Sant | heltals-int32 | Agentpoolen som ska användas |
api-version |
query | Falsk | sträng | Version av API:et som ska användas. Värdet ska anges till "6.0" för att använda den här versionen av API:et. |
För att utlösa agentuppdatering – begärandetexten ska vara tom.
Kommentar
Azure Pipelines-agenten är öppen källkod på GitHub.
Läs mer
Mer information om agenter finns i följande moduler från utbildningsvägen Skapa program med Azure DevOps .