Share via


Git-opdrachten uitvoeren in een script

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Voor sommige werkstromen hebt u uw build-pijplijn nodig om Git-opdrachten uit te voeren. Bijvoorbeeld, nadat een CI-build op een functiebranch is voltooid, kan het team de vertakking samenvoegen met main.

Git is beschikbaar op door Microsoft gehoste agents en on-premises agents.

Scripts inschakelen om Git-opdrachten uit te voeren

Notitie

Voordat u begint, moet u ervoor zorgen dat de standaardidentiteit van uw account is ingesteld met de volgende code. Dit moet worden gedaan als de eerste stap na het uitchecken van uw code.

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Machtigingen voor versiebeheer verlenen aan de buildservice

  1. Ga naar de pagina met projectinstellingen voor uw organisatie bij Organization Instellingen> General>Projects.

    Selecteer de instellingen van uw organisatie.

  2. Selecteer het project dat u wilt bewerken.

    Selecteer uw project.

  3. Selecteer opslagplaatsen in Project Instellingen. Selecteer de opslagplaats waarop u Git-opdrachten wilt uitvoeren.

  4. Selecteer Beveiliging om de beveiliging van uw opslagplaats te bewerken.

    Kies Beveiliging om de beveiliging van uw opslagplaats te bewerken.

  5. Zoek naar projectverzamelingsbuildservice. Kies de identiteit {{uw projectnaam}} Build-service ({uw organisatie}) (niet de serviceaccounts voor het bouwen van projectverzamelingen ({uw organisatie})). Standaard kan deze identiteit worden gelezen uit de opslagplaats, maar kan er geen wijzigingen naar terug worden gepusht. Verken machtigingen die nodig zijn voor de Git-opdrachten die u wilt uitvoeren. Doorgaans wilt u het volgende verlenen:

    • Vertakking maken: Toestaan
    • Bijdragen: Toestaan
    • Lezen: Toestaan
    • Tag maken: Toestaan

Ga naar het tabblad Configuratiescherm voor versiebeheer

  • Azure-opslagplaatsen: https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol

  • On-premises: https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol

project beheren

Als u deze pagina ziet, selecteert u de opslagplaats en selecteert u vervolgens de koppeling:

configuratiescherm boven aan project

Tabblad Versiebeheer van configuratiescherm

Selecteer op het tabblad Versiebeheer de opslagplaats waarin u Git-opdrachten wilt uitvoeren en selecteer vervolgens Project Collection Build Service. Standaard kan deze identiteit worden gelezen uit de opslagplaats, maar kan er geen wijzigingen naar terug worden gepusht.

permissions

Verken machtigingen die nodig zijn voor de Git-opdrachten die u wilt uitvoeren. Doorgaans wilt u het volgende verlenen:

  • Vertakking maken: Toestaan
  • Bijdragen: Toestaan
  • Lezen: Toestaan
  • Tag maken: Toestaan

Wanneer u klaar bent met het verlenen van machtigingen, moet u Wijzigingen opslaan selecteren.

Scripts toegang geven tot het systeemtoken

Voeg een checkout sectie met persistCredentials de set toe aan true.

steps:
- checkout: self
  persistCredentials: true

Meer informatie over checkout.

Selecteer op het tabblad Opties de optie Scripts toegang geven tot het OAuth-token.

Zorg ervoor dat u de lokale opslagplaats opschoont

Bepaalde soorten wijzigingen in de lokale opslagplaats worden niet automatisch opgeschoond door de build-pijplijn. Zorg er dus voor dat u het volgende doet:

  • Verwijder lokale vertakkingen die u maakt.
  • Git-configuratiewijzigingen ongedaan maken.

Als u problemen ondervindt met het gebruik van een on-premises agent, controleert u of de opslagplaats schoon is:

Zorg ervoor dat checkout deze is clean ingesteld op true.

steps:
- checkout: self
  clean: true
  • Stel op het tabblad Opslagplaats op Clean in op True.

  • Maak of wijzig de Build.Clean variabele op het tabblad Variabelen en stel deze in opsource

Voorbeelden

De bestanden in uw opslagplaats weergeven

Voeg op het tabblad Build deze taak toe:

Opdracht Argumenten

Hulpprogramma: opdrachtregel
De bestanden in de Git-opslagplaats weergeven.
Hulpprogramma: git

Argumenten: ls-files

Een functiebranch samenvoegen naar het hoofd

U wilt dat een CI-build wordt samengevoegd naar het hoofd als de build slaagt.

Selecteer op het tabblad Triggers continue integratie (CI) en neem de vertakkingen op die u wilt bouwen.

Maken merge.bat in de hoofdmap van uw opslagplaats:

@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

Voeg op het tabblad Opbouwen dit toe als laatste taak:

Opdracht Argumenten

Hulpprogramma: Batch-script
Voer merge.bat uit.
Pad: merge.bat

Veelgestelde vragen

Kan ik Git-opdrachten uitvoeren als mijn externe opslagplaats zich in GitHub of een andere Git-service bevindt, zoals Bitbucket Cloud?

Ja

Welke taken kan ik gebruiken om Git-opdrachten uit te voeren?

Batchscript

Opdrachtregel

Powershell

Shellscript

Hoe kan ik voorkomen dat een CI-build wordt geactiveerd wanneer het script wordt gepusht?

Voeg toe ***NO_CI*** aan uw doorvoerbericht. Hier volgen enkele voorbeelden:

  • git commit -m "This is a commit message ***NO_CI***"
  • git merge origin/features/hello-world -m "Merge to main ***NO_CI***"

Voeg toe [skip ci] aan uw doorvoerbericht of beschrijving. Hier volgen enkele voorbeelden:

  • git commit -m "This is a commit message [skip ci]"
  • git merge origin/features/hello-world -m "Merge to main [skip ci]"

U kunt deze variaties ook gebruiken voor doorvoeringen naar Azure Repos Git, Bitbucket Cloud, GitHub en GitHub Enterprise Server.

  • [skip ci] of [ci skip]
  • skip-checks: true of skip-checks:true
  • [skip azurepipelines] of [azurepipelines skip]
  • [skip azpipelines] of [azpipelines skip]
  • [skip azp] of [azp skip]
  • ***NO_CI***

Heb ik een agent nodig?

U hebt ten minste één agent nodig om uw build of release uit te voeren.

Ik heb problemen. Hoe kan ik problemen met deze problemen oplossen?

Zie Problemen met build en release oplossen.

Ik kan geen standaardagentpool selecteren en ik kan mijn build of release niet in de wachtrij plaatsen. Hoe kan ik dit oplossen?

Zie agentpools.

Mijn NuGet-pushtaak mislukt met de volgende fout: 'Fout: kan geen lokaal verlenercertificaat ophalen'. Hoe kan ik dit oplossen?

Dat kan worden opgelost door een vertrouwd basiscertificaat toe te voegen. U kunt de omgevingsvariabele NODE_EXTRA_CA_CERTS=file toevoegen aan uw buildagent of u kunt ook de NODE.EXTRA.CA.CERTS=file taakvariabele toevoegen in uw pijplijn. Raadpleeg Node.js documentatie voor meer informatie over deze variabele. Raadpleeg Variabelen instellen in een pijplijn voor instructies over het instellen van een variabele in uw pijplijn.

Ik gebruik TFS on-premises en ik zie sommige van deze functies niet. Waarom niet?

Sommige van deze functies zijn alleen beschikbaar in Azure Pipelines en zijn nog niet on-premises beschikbaar. Sommige functies zijn on-premises beschikbaar als u een upgrade hebt uitgevoerd naar de nieuwste versie van TFS.