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
Git-kommandon är tillgängliga för byggarbetsflöden på Microsoft-värdbaserade och lokalt installerade agenter. När en ci-version (continuous integration) har slutförts på en funktionsgren kan du till exempel sammanfoga grenen till main. Den här artikeln beskriver hur du kör Git-kommandon i Azure Pipelines-byggskript.
Aktivera skript för att köra Git-kommandon
Kontrollera att GitHub använder ditt Azure DevOps-kontos standardidentitet. Om det behövs anger du GitHub-användaren som det första steget efter utcheckningen.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Bevilja behörigheter till byggtjänsten
Projektversionstjänsten måste ha behörighet att skriva till källlagringsplatsen. Ange de behörigheter som krävs enligt följande:
I Projektinställningar för projektet väljer du Lagringsplatser under Lagringsplatser.
På sidan Alla lagringsplatser väljer du Säkerhet för att ange behörigheter för alla lagringsplatser i projektet. Eller välj den lagringsplats som du vill köra Git-kommandon på och välj sedan Säkerhet på lagringsplatsens sida.
På sidan Användarbehörigheter väljer du build service-identiteten . Se till att välja <projektnamnet> Build Service (<organisation>) under Användare, inte Project Collection Build Service-konton. Som standard kan den här identiteten läsas från lagringsplatsen men kan inte skicka några ändringar till den.
Listrutan och välj Tillåt bredvid varje behörighet som behövs för de Git-kommandon som du vill köra, vanligtvis skapa gren, Bidra, Läsa och Skapa tagg.
Tillåt att skript får åtkomst till systemtoken
Så här tillåter du att skript får åtkomst till GitHub OAuth-token:
Lägg till ett checkout steg i YAML-pipelinen med persistCredentials inställt på true.
steps:
- checkout: self
persistCredentials: true
Mer information om steget checkout finns i steps.checkout definitionen.
Rensa den lokala lagringsplatsen
Bygg-pipelinen rensar inte automatiskt vissa ändringar i den lokala lagringsplatsen, till exempel att ta bort lokala grenar eller ångra lokala git config ändringar. Om du stöter på problem med att använda en lokalt installerad agent kan du rensa lagringsplatsen innan du kör bygget.
I allmänhet ska du inte rensa lagringsplatsen för snabbare prestanda för lokalt installerade agenter. Rensning är inte effektivt för Microsoft-värdbaserade agenter eftersom de använder en ny agent varje gång. Mer information finns i Rensa den lokala lagringsplatsen på agenten.
Så här rensar du lagringsplatsen innan du kör bygget:
Ange clean till true i checkout steget. Det här alternativet körs git clean -ffdx följt av git reset --hard HEAD innan du hämtar.
steps:
- checkout: self
clean: true
Välj Variabler i pipelineredigeraren , skapa eller ändra variabeln Build.Clean och ange dess värde till source.
Git-kommandoexempel
Följande exempel kör Git-kommandon i en kommandoradsaktivitet och en Batch-skriptaktivitet .
Visa en lista över filerna på lagringsplatsen
Om du vill visa en lista över filerna i Git-lagringsplatsen använder du kommandoradsaktiviteten i en YAML-pipeline på följande sätt:
- task: CmdLine@2
inputs:
script: 'git ls-files'
Sammanfoga en funktionell gren till huvudgrenen
Följande klassiska pipelineexempel sammanfogar en CI-version till main om bygget lyckas.
Skapa en fil med namnet merge.bat i roten på lagringsplatsen med följande innehåll:
@echo off ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH% IF %BUILD_SOURCEBRANCH% == refs/heads/main ( ECHO Building main branch so no merge is needed. EXIT ) SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=% ECHO GIT CHECKOUT MAIN git checkout main ECHO GIT STATUS git status ECHO GIT MERGE git merge %sourceBranch% -m "Merge to main" ECHO GIT STATUS git status ECHO GIT PUSH git push origin ECHO GIT STATUS git statusPå fliken Utlösare i den klassiska pipelinen markerar du kryssrutan för att aktivera kontinuerlig integrering.
Under Grenfilter och Sökvägsfilter väljer du grenar och sökvägar som ska inkluderas eller exkluderas från bygget.
Lägg till ett Batch-skript som den sista uppgiften i pipelinen.
Under Sökväg i aktivitetskonfigurationen anger du platsen och namnet på filenmerge.bat .
Vanliga frågor
Kan jag köra Git-kommandon om min fjärranslutna lagringsplats finns i GitHub eller någon annan Git-tjänst, till exempel Bitbucket Cloud?
Ja, du kan köra Git-kommandon om fjärrplatsen finns i GitHub eller någon annan Git-tjänst, till exempel Bitbucket Cloud.
Vilka uppgifter kan jag använda för att köra Git-kommandon?
Du kan använda följande Azure Pipelines-uppgifter för att köra Git-kommandon:
Hur kan jag undvika att utlösa en CI-version när skriptet skickas?
För att undvika att utlösa en CI-version när skriptet skickas lägger du till [skip ci] i incheckningsmeddelandet eller beskrivningen. Till exempel:
git commit -m "This is a commit message [skip ci]"git merge origin/features/hello-world -m "Merge to main [skip ci]"
Du kan också använda någon av följande varianter för incheckningar till Azure Repos Git, Bitbucket Cloud, GitHub eller GitHub Enterprise Server:
-
[skip ci]eller[ci skip] -
skip-checks: trueellerskip-checks:true -
[skip azurepipelines]eller[azurepipelines skip] -
[skip azpipelines]eller[azpipelines skip] -
[skip azp]eller[azp skip] ***NO_CI***
Behöver jag en agent för att köra pipelines?
Ja, du behöver minst en agent för att köra bygg- eller versionspipelinen.
Hur kan jag felsöka problem?
Hur kan jag åtgärda att jag inte kan välja en standardagentpool eller köa min pipelinekörning?
Se Skapa och hantera agentpooler.
Hur kan jag åtgärda att min NuGet-push-uppgift misslyckas med "Fel: det går inte att hämta det lokala utfärdarcertifikatet"?
Du kan åtgärda det här problemet genom att lägga till ett betrott rotcertifikat. Lägg antingen till NODE_EXTRA_CA_CERTS=file miljövariabeln i byggagenten eller lägg till aktivitetsvariabeln NODE.EXTRA.CA.CERTS=file i pipelinen.
Mer information om den här variabeln finns i NODE_EXTRA_CA_CERTS=file i Node.js-dokumentationen. Anvisningar om hur du anger en variabel i pipelinen finns i Ange variabler i en pipeline.
Varför ser jag inte några av de här funktionerna i min lokala Azure DevOps Server?
Vissa av dessa funktioner är endast tillgängliga i Azure DevOps Services och är inte tillgängliga för lokal Azure DevOps Server. Vissa funktioner är endast tillgängliga i den senaste versionen av Azure DevOps Server.