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
Ga naar de pagina met projectinstellingen voor uw organisatie bij Organization Instellingen> General>Projects.
Selecteer het project dat u wilt bewerken.
Selecteer opslagplaatsen in Project Instellingen. Selecteer de opslagplaats waarop u Git-opdrachten wilt uitvoeren.
Selecteer Beveiliging om de beveiliging van uw opslagplaats te bewerken.
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
Als u deze pagina ziet, selecteert u de opslagplaats en selecteert u vervolgens de koppeling:
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.
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
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:
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?
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
ofskip-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.