Dela via


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

  1. Gå till sidan projektinställningar för din organisation påAllmänna>projekt för >.

    Välj organisationens inställningar.

  2. Välj det projekt som du vill redigera.

    Välj ditt projekt.

  3. I Projektinställningar väljer du Lagringsplatser. Välj den lagringsplats som du vill köra Git-kommandon på.

  4. Välj Säkerhet för att redigera lagringsplatsens säkerhet.

    Välj Säkerhet för att redigera lagringsplatsens säkerhet.

  5. 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

Lägg till ett checkout avsnitt med persistCredentials inställt på true.

steps:
- checkout: self
  persistCredentials: true

Läs mer om checkout.

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:

Kontrollera att checkout är inställd på clean.

steps:
- checkout: self
  clean: true

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.

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?

Batch Script

Kommandorad

PowerShell

Shell-skript

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 eller skip-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.