Delen via


Git-opdrachten uitvoeren in pijplijnscripts

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Git-opdrachten zijn beschikbaar voor het bouwen van werkstromen op door Microsoft gehoste en zelf-hostende agents. Wanneer een CI-build (continue integratie) bijvoorbeeld is voltooid op een functiebranch, kunt u de vertakking samenvoegen naar de hoofdfunctie. In dit artikel wordt uitgelegd hoe u Git-opdrachten uitvoert in Azure Pipelines-buildscripts.

Scripts inschakelen om Git-opdrachten uit te voeren

Zorg ervoor dat GitHub de standaardidentiteit van uw Azure DevOps-account gebruikt. Stel indien nodig de GitHub-gebruiker in als de eerste stap na het uitchecken.

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

Machtigingen verlenen aan de buildservice

De buildservice van het project moet machtigingen hebben om naar de bronopslagplaats te schrijven. Stel de vereiste machtigingen als volgt in:

  1. Selecteer opslagplaatsen onder Opslagplaatsen in de projectinstellingen voor uw project.

  2. Selecteer Beveiliging op de pagina Alle opslagplaatsen om machtigingen in te stellen voor alle opslagplaatsen in het project. Of selecteer de opslagplaats waarop u Git-opdrachten wilt uitvoeren en selecteer vervolgens Beveiliging op de pagina van die opslagplaats.

    Sreenshot met het selecteren van Beveiliging voor opslagplaatsen.

  3. Selecteer op de pagina Gebruikersmachtigingen de identiteit van de buildservice . Zorg ervoor dat u projectnaam< Build Service (>organisatie<) selecteert> onder Gebruikers, niet projectverzamelingsserviceaccounts. Deze identiteit kan standaard worden gelezen uit de opslagplaats, maar er kunnen geen wijzigingen naar worden gepusht.

  4. Selecteer de vervolgkeuzelijst en selecteer Toestaan naast elke machtiging die nodig is voor de Git-opdrachten die u wilt uitvoeren, meestal branch maken, Bijdragen, Lezen en Tag maken.

    Schermopname van het verlenen van de identiteitsmachtigingen aan opslagplaatsen.

Scripts toegang geven tot het systeemtoken

Scripts toegang geven tot het GitHub OAuth-token:

Voeg een checkout stap toe aan uw YAML-pijplijn met persistCredentials ingesteld op true.

steps:
- checkout: self
  persistCredentials: true

Zie de definitie voor meer informatie over de checkoutsteps.checkout stap.

De lokale opslagplaats opschonen

Met de build-pijplijn worden bepaalde wijzigingen in de lokale opslagplaats niet automatisch opgeschoond, zoals het verwijderen van lokale vertakkingen of het ongedaan maken van lokale git config wijzigingen. Als u problemen ondervindt met het gebruik van een zelf-hostende agent, kunt u de opslagplaats opschonen voordat u de build uitvoert.

Over het algemeen moet u de opslagplaats niet opschonen voor snellere prestaties van zelf-hostende agents. Opschonen is niet effectief voor door Microsoft gehoste agents, omdat ze elke keer een nieuwe agent gebruiken. Zie De lokale opslagplaats op de agent opschonen voor meer informatie.

De opslagplaats opschonen voordat u de build uitvoert:

Ingesteld clean op true in de checkout stap. Deze optie wordt git clean -ffdx gevolgd door git reset --hard HEAD voordat u het ophaalt.

steps:
- checkout: self
  clean: true

Selecteer Variabelen in de pijplijneditor, maak of wijzig de variabele en stel de Build.Clean waarde in op source.

Voorbeelden van Git-opdrachten

In de volgende voorbeelden worden Git-opdrachten uitgevoerd in een opdrachtregeltaak en een Batch-scripttaak .

De bestanden in uw opslagplaats weergeven

Als u de bestanden in de Git-opslagplaats wilt weergeven, gebruikt u de opdrachtregeltaak in een YAML-pijplijn als volgt:

- task: CmdLine@2
  inputs:
    script: 'git ls-files'

Een feature branch samenvoegen met de hoofdbranch

In het volgende voorbeeld van een klassieke pijplijn wordt een CI-build main samengevoegd als de build slaagt.

  1. Maak een bestand met de naam merge.bat in de hoofdmap van de opslagplaats met de volgende inhoud:

    @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
    
  2. Schakel op het tabblad Triggers in uw klassieke pijplijn het selectievakje in om continue integratie in te schakelen.

  3. Selecteer onder Vertakkingsfilters en padfilters vertakkingen en paden die u wilt opnemen of uitsluiten van de build.

  4. Voeg een Batch-script toe als laatste taak in uw pijplijn.

  5. Voer onder Pad in de taakconfiguratie de locatie en naam van het merge.bat-bestand in.

Veelgestelde vragen

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

Ja, u kunt Git-opdrachten uitvoeren als uw externe opslagplaats zich in GitHub of een andere Git-service bevindt, zoals Bitbucket Cloud.

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

U kunt de volgende Azure Pipelines-taken gebruiken om Git-opdrachten uit te voeren:

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

Als u wilt voorkomen dat een CI-build wordt geactiveerd wanneer het script wordt gepusht, voegt u het doorvoerbericht of de beschrijving toe [skip ci] . Voorbeeld:

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

U kunt ook een van de volgende variaties gebruiken voor doorvoeringen naar Azure Repos Git, Bitbucket Cloud, GitHub of 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 om pijplijnen uit te voeren?

Ja, u hebt ten minste één agent nodig om uw build- of release-pijplijn uit te voeren.

Hoe kan ik problemen oplossen?

Zie Problemen met pijplijnuitvoeringen oplossen.

Hoe kan ik oplossen dat ik geen standaardagentpool kan selecteren of mijn pijplijnuitvoering in de wachtrij kan plaatsen?

Zie Agentpools maken en beheren.

Hoe kan ik mijn NuGet-pushtaak oplossen die mislukt met 'Fout: kan lokale verlenercertificaat niet ophalen'?

U kunt dit probleem oplossen door een vertrouwd basiscertificaat toe te voegen. Voeg de NODE_EXTRA_CA_CERTS=file omgevingsvariabele toe aan uw buildagent of voeg de NODE.EXTRA.CA.CERTS=file taakvariabele toe aan uw pijplijn.

Zie NODE_EXTRA_CA_CERTS=bestand in de documentatie van Node.js voor meer informatie over deze variabele. Zie Variabelen instellen in een pijplijn voor instructies over het instellen van een variabele in uw pijplijn.

Waarom zie ik sommige van deze functies niet in mijn on-premises Azure DevOps-server?

Sommige van deze functies zijn alleen beschikbaar in Azure DevOps Services en niet beschikbaar voor on-premises Azure DevOps Server. Sommige functies zijn alleen beschikbaar in de nieuwste versie van Azure DevOps Server.