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

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

    Välj organisationens inställningar.

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

    Välj ditt projekt.

  3. I Project Instä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å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

hantera projekt

Om du ser den här sidan väljer du lagringsplatsen och väljer sedan länken:

kontrollpanelen överst till projekt

kontrollpanelens projektversionskontrollflik

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.

behörigheter

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

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

steps:
- checkout: self
  persistCredentials: true

Läs mer om checkout.

På fliken Alternativ väljer du Tillåt skript för åtkomst till OAuth-token.

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:

Kontrollera att checkout har clean angetts till true.

steps:
- checkout: self
  clean: true
  • På fliken Lagringsplats anger du Rensa till sant.

  • På fliken Variabler skapar eller ändrar du variabeln och ställer in den Build.Cleansource

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?

Batch-skript

Kommandoraden

PowerShell

Gränssnittsskript

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