Ausführen von Git-Befehlen in einem Skript
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Für einige Workflows muss Ihre Buildpipeline Git-Befehle ausführen. Nachdem beispielsweise ein CI-Build auf einem Featurebranch abgeschlossen ist, möchte das Team den Branch ggf. in Main mergen.
Git ist für in von Microsoft gehosteten Agents und lokalen Agents verfügbar.
Aktivieren von Skripts zum Ausführen von Git-Befehlen
Hinweis
Bevor Sie beginnen, stellen Sie sicher, dass die Standardidentität Ihres Kontos mit dem folgenden Code festgelegt ist. Dies muss der erste Schritt sein, nachdem Sie Ihren Code ausgecheckt haben.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Gewähren von Versionskontrollberechtigungen für den Builddienst
Wechseln Sie zur Seite mit den Projekteinstellungen für Ihre organization unter Organisationseinstellungen>Allgemeine>Projekte.
Wählen Sie das Projekt aus, das Sie bearbeiten möchten.
Wählen Sie unter Projekteinstellungendie Option Repositorys aus. Wählen Sie das Repository aus, auf dem Sie Git-Befehle ausführen möchten.
Wählen Sie Sicherheit aus, um die Repositorysicherheit zu bearbeiten.
Suchen Sie nach Builddienst für die Projektauflistung. Wählen Sie die Identität {{your project name}} Build Service ({your organization}) (nicht die Gruppe Project Collection Build Service Accounts ({your organization})). Standardmäßig kann diese Identität aus dem Repository lesen, aber keine Änderungen zurück an das Repository übertragen. Erteilen Sie die erforderlichen Berechtigungen für die Git-Befehle, die Sie ausführen möchten. In der Regel möchten Sie Folgendes gewähren:
- Branch erstellen: Ermöglichen
- Beitragen: Ermöglichen
- Lesen: Zulassen
- Tag erstellen: Ermöglichen
Wechseln Zur Registerkarte "Versionssteuerung"
Azure Repos:
https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol
Lokale Instanzen:
https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol
Wenn diese Seite angezeigt wird, wählen Sie das Repository und dann den Link aus:
Wählen Sie auf der Registerkarte Versionskontrolle das Repository aus, in dem Sie Git-Befehle ausführen möchten, und wählen Sie dann Projektsammlungsbuilddienst aus. Standardmäßig kann diese Identität aus dem Repository lesen, aber keine Änderungen zurück an das Repository übertragen.
Erteilen Sie die erforderlichen Berechtigungen für die Git-Befehle, die Sie ausführen möchten. In der Regel möchten Sie Folgendes gewähren:
- Branch erstellen: Ermöglichen
- Beitragen: Ermöglichen
- Lesen: Zulassen
- Tag erstellen: Ermöglichen
Wenn Sie mit dem Erteilen der Berechtigungen fertig sind, stellen Sie sicher, dass Sie Änderungen speichern auswählen.
Skripts den Zugriff auf das OAuth-Token erlauben
Wählen Sie auf der Registerkarte Optionen die Option Skripts den Zugriff auf OAuth-Token zulassen aus.
Stellen Sie sicher, dass Sie das lokale Repository sauber.
Bestimmte Arten von Änderungen am lokalen Repository werden nicht automatisch von der Buildpipeline bereinigt. Stellen Sie Folgendes sicher:
- Löschen Sie lokale Verzweigungen, die Sie erstellen.
- Rückgängigmachen von Git-Konfigurationsänderungen.
Wenn Bei der Verwendung eines lokalen Agents Probleme auftreten, stellen Sie sicher, dass das Repository sauber ist:
Legen Sie auf der Registerkarte RepositoryClean auf true fest.
Erstellen oder ändern Sie auf der Registerkarte Variablen die
Build.Clean
Variable, und legen Sie sie auf fest.source
Beispiele
Auflisten der Dateien in Ihrem Repository
Auf der Registerkarte build fügen Sie diese Aufgabe hinzu:
Aufgabe | Argumente |
---|---|
Hilfsprogramm: Befehlszeile Listen Sie die Dateien im Git-Repository auf. |
Tool: git Argumente: ls-files |
Zusammenführen eines Featurebranch zu Standard
Sie möchten, dass ein CI-Build in Standard zusammengeführt werden soll, wenn der Build erfolgreich ist.
Wählen Sie auf der Registerkarte Trigger die Option Continuous Integration (CI) aus, und schließen Sie die Branches ein, die Sie erstellen möchten.
Erstellen Sie merge.bat
im Stammverzeichnis Ihres Repositorys:
@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
Fügen Sie auf der Registerkarte Build folgendes als letzte Aufgabe hinzu:
Aufgabe | Argumente |
---|---|
Hilfsprogramm: Batch-Skript Führen Sie merge.bat aus. |
Pfad: merge.bat |
Häufig gestellte Fragen
Kann ich Git-Befehle ausführen, wenn sich mein Remoterepository in GitHub oder einem anderen Git-Dienst wie Bitbucket Cloud befindet?
Ja
Welche Aufgaben kann ich verwenden, um Git-Befehle auszuführen?
Gewusst wie vermeiden, dass ein CI-Build ausgelöst wird, wenn das Skript pusht?
Fügen Sie Ihrer Commitnachricht ***NO_CI***
hinzu. Hier finden Sie Beispiele:
git commit -m "This is a commit message ***NO_CI***"
git merge origin/features/hello-world -m "Merge to main ***NO_CI***"
Fügen Sie [skip ci]
Ihrer Commitnachricht oder Beschreibung hinzu. Hier finden Sie Beispiele:
git commit -m "This is a commit message [skip ci]"
git merge origin/features/hello-world -m "Merge to main [skip ci]"
Sie können jede dieser Varianten auch für Commits an Azure Repos Git, Bitbucket Cloud, GitHub und GitHub Enterprise Server verwenden.
[skip ci]
oder[ci skip]
skip-checks: true
oderskip-checks:true
[skip azurepipelines]
oder[azurepipelines skip]
[skip azpipelines]
oder[azpipelines skip]
[skip azp]
oder[azp skip]
***NO_CI***
Benötige ich einen Agent?
Sie benötigen mindestens einen Agent, um den Build oder das Release auszuführen.
Ich habe Probleme. Wie kann ich diese beheben?
Weitere Informationen finden Sie unter Problembehandlung bei Build und Release.
Ich kann keinen standardmäßigen Agentpool auswählen und ich kann meine Builds oder Releases nicht in der Warteschlange positionieren. Wie kann ich dies korrigieren?
Weitere Informationen finden Sie unter Agentpools.
Die Nuget-Pushaufgabe scheitert mit folgendem Fehler: „Fehler: Das lokale Ausstellerzertifikat konnte nicht abgerufen werden.“ Wie kann ich dieses Problem beheben?
Dies kann durch das Hinzufügen eines vertrauenswürdigen Stammzertifikats behoben werden. Sie können entweder die NODE_EXTRA_CA_CERTS=file
Umgebungsvariable ihrem Build-Agent hinzufügen oder die NODE.EXTRA.CA.CERTS=file
Aufgabenvariable in Ihrer Pipeline. Weitere Informationen zu dieser Variablen finden Sie in der Dokumentation zu Node.js. Anweisungen zum Festlegen einer Variablen in Ihrer Pipeline finden Sie unter Festlegen von Variablen in einer Pipeline.
Ich verwende TFS lokal und einige dieser Features werden nicht angezeigt. Warum nicht?
Einige dieser Features sind nur auf Azure Pipelines und noch nicht lokal verfügbar. Einige Features sind lokal verfügbar, wenn Sie ein Upgrade auf die neueste Version von TFS vorgenommen haben.