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å Microsofts värdbaserade agenter och på lokala agenter.
Aktivera skript för att köra Git-kommandon
Kommentar
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å Organisations Inställningar> Allmänt>projekt.
Välj det projekt som du vill redigera.
I Project Instä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åt
- Bidra: Tillåt
- Läs: Tillåt
- Skapa tagg: Tillåt
Gå till kontrollpanelen för versionskontroll
Azure Repos:
https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol
Lokalt:
https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol
Om du ser den här sidan väljer du lagringsplatsen och väljer sedan länken:
På fliken Versionskontroll väljer du den lagringsplats där du vill köra Git-kommandon och väljer sedan Byggtjänst för projektsamling. 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åt
- Bidra: Tillåt
- Läs: Tillåt
- Skapa tagg: Tillåt
När du är klar med att bevilja behörigheterna måste du välja Spara ändringar.
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 bygg-pipelinen. 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:
Exempel
Visa en lista över filerna på lagringsplatsen
Lägg till den här uppgiften på fliken Build:
Uppgift | Argument |
---|---|
Verktyg: Kommandorad Visa en lista över filerna på Git-lagringsplatsen. |
Verktyg: git Argument: ls-files |
Sammanfoga en funktionsgren till main
Du vill att en CI-version ska sammanfogas till 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å lagringsplatsen:
@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 | Argument |
---|---|
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 gör jag för att undvika att utlösa en CI-version när skriptet skickas?
Lägg till ***NO_CI***
i incheckningsmeddelandet. Här följer några exempel:
git commit -m "This is a commit message ***NO_CI***"
git merge origin/features/hello-world -m "Merge to main ***NO_CI***"
Lägg till [skip ci]
i incheckningsmeddelandet eller beskrivningen. Här följer några 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 din version eller 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 version eller version. 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?
Du kan åtgärda det här genom att lägga till ett betrott rotcertifikat. Du kan antingen lägga till miljövariabeln NODE_EXTRA_CA_CERTS=file
i kompileringsagenten eller lägga till aktivitetsvariabeln NODE.EXTRA.CA.CERTS=file
i din pipeline. Mer information om den här variabeln finns i Node.js-dokumentationen. I Ange variabler i en pipeline finns instruktioner för 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.