Köra Git-kommandon i ett skript
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Du måste använda din bygg-pipeline för att köra Git-kommandon för vissa arbetsflöden. När en CI-version på en funktionsgren till exempel är klar kanske teamet vill slå samman grenen till huvudgrenen.
Git är tillgängligt på Microsoft-hostade agenter och agenter på plats.
Aktivera skript för att köra Git-kommandon
Anmärkning
Innan du börjar kontrollerar du att ditt kontos standardidentitet har angetts med följande kod. Detta måste göras som det första steget när du har checkat ut koden.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Bevilja versionskontrollbehörigheter till byggtjänsten
Gå till sidan projektinställningar för din organisation påAllmänna>projekt för >.
Välj det projekt som du vill redigera.
I Projektinställningar väljer du Lagringsplatser. Välj den lagringsplats som du vill köra Git-kommandon på.
Välj Säkerhet för att redigera lagringsplatsens säkerhet.
Sök efter Project Collection Build Service. Välj identiteten {{ditt projektnamn}} Build Service ({din organisation}) (inte gruppen Project Collection Build Service Accounts ({din organisation})). Som standard kan den här identiteten läsas från lagringsplatsen men kan inte skicka tillbaka några ändringar till den. Bevilja behörigheter som behövs för de Git-kommandon som du vill köra. Vanligtvis vill du bevilja:
- Skapa gren: Tillåta
- Bidra: Tillåta
- Läsa: Tillåta
- Skapa tagg: Tillåta
Tillåt att skript får åtkomst till systemtoken
Se till att rensa den lokala lagringsplatsen
Vissa typer av ändringar i den lokala lagringsplatsen rensas inte automatiskt av byggkedjan. Så se till att:
- Ta bort lokala grenar som du skapar.
- Ångra git-konfigurationsändringar.
Om du stöter på problem med att använda en lokal agent kontrollerar du att lagringsplatsen är ren:
På fliken Lagringsplats anger du Rensa till sant.
På fliken Variabler skapar eller ändrar du variabeln och ställer in den
Build.Clean
påsource
Exempel
Visa en lista över filerna på lagringsplatsen
Lägg till den här uppgiften på fliken Build:
Uppgift | Argumentpunkter |
---|---|
![]() Verktyg: Kommandorad Visa en lista över filerna på Git-lagringsplatsen. |
Verktyg: git Argument: ls-files |
Sammanfoga en funktionell gren till huvudgrenen
Du vill att ett CI-bygge ska slås ihop med main om bygget lyckas.
På fliken Utlösare väljer du Kontinuerlig integrering (CI) och inkluderar de grenar som du vill skapa.
Skapa merge.bat
i roten på ditt lagringsutrymme:
@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 status
Lägg till det här som den sista uppgiften på fliken Build :
Uppgift | Argumentpunkter |
---|---|
![]() Verktyg: Batch-skript Kör merge.bat. |
Sökväg: merge.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
Vilka uppgifter kan jag använda för att köra Git-kommandon?
Hur undviker jag att utlösa en CI-version när skriptet skickas?
Lägg till [skip ci]
i incheckningsmeddelandet eller beskrivningen. Här är 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 dessa varianter för incheckningar till Azure Repos Git, Bitbucket Cloud, GitHub och GitHub Enterprise Server.
-
[skip ci]
eller[ci skip]
-
skip-checks: true
ellerskip-checks:true
-
[skip azurepipelines]
eller[azurepipelines skip]
-
[skip azpipelines]
eller[azpipelines skip]
-
[skip azp]
eller[azp skip]
***NO_CI***
Behöver jag en agent?
Du behöver minst en agent för att köra ditt bygge eller din version.
Jag har problem. Hur felsöker jag dem?
Mer information finns i Felsöka build och release.
Jag kan inte välja en standardagentpool och jag kan inte köa min bygg eller release. Hur åtgärdar jag detta?
Se Agentpooler.
Min NuGet-push-uppgift misslyckas med följande fel: "Fel: det går inte att hämta det lokala utfärdarcertifikatet". Hur kan jag åtgärda detta?
Detta kan åtgärdas genom att lägga till ett betrodd rotcertifikat. Du kan antingen lägga till NODE_EXTRA_CA_CERTS=file
miljövariabeln i byggagenten eller lägga till aktivitetsvariabeln NODE.EXTRA.CA.CERTS=file
i pipelinen. Mer information om den här variabeln finns i Node.js dokumentation . Se Ange variabler i en pipeline för instruktioner om hur du anger en variabel i din pipeline.
Jag använder TFS lokalt och jag ser inte några av dessa funktioner. Varför inte?
Vissa av dessa funktioner är endast tillgängliga i Azure Pipelines och är ännu inte tillgängliga lokalt. Vissa funktioner är tillgängliga lokalt om du har uppgraderat till den senaste versionen av TFS.