Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Git-Befehle sind für Buildworkflows auf Microsoft-hosted und self-hosted Agents verfügbar. Beispielsweise können Sie den Feature-Branch nach Abschluss eines CI-Builds (Continuous Integration) in den Haupt-Branch zusammenführen. In diesem Artikel wird erläutert, wie Git-Befehle in Azure Pipelines Buildskripts ausgeführt werden.
Aktivieren von Skripts zum Ausführen von Git-Befehlen
Stellen Sie sicher, dass Git die Standardidentität Ihres Azure DevOps Kontos verwendet. Legen Sie bei Bedarf den Git-Benutzer als ersten Schritt nach dem Auschecken fest.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Berechtigungen für den Build-Service erteilen
Der Projektbuilddienst muss über Berechtigungen zum Schreiben in das Quell-Repository verfügen. Legen Sie die erforderlichen Berechtigungen wie folgt fest:
Wählen Sie im Project Settings für Ihre project Repositories unter Repos aus.
Wählen Sie auf der Seite "Alle Repositorys " die Option "Sicherheit " aus, um Berechtigungen für alle Repositorys im Projekt festzulegen. Oder wählen Sie das Repository aus, auf dem Git-Befehle ausgeführt werden sollen, und wählen Sie dann auf der Seite dieses Repositorys "Sicherheit " aus.
Wählen Sie auf der Seite Benutzerberechtigungen die Build-Service-Identität aus. Wählen Sie unbedingt <Projektname> Builddienst (<organization>) unter Benutzer aus, nicht Project Collection Build-Dienstkonten. Standardmäßig kann diese Identität aus dem Repository lesen, aber keine Änderungen daran pushen.
Wählen Sie in der Liste neben jeder für die Git-Befehle erforderlichen Berechtigung die Option "Zulassen" aus, in der Regel Branch erstellen, Mitwirken, Lesen und Tag erstellen.
Zulassen, dass Skripts auf das Systemtoken zugreifen
So ermöglichen Sie Skripts den Zugriff auf das GitHub OAuth-Token:
Fügen Sie Ihrer YAML-Pipeline einen checkout-Schritt mit persistCredentials auf true festgelegt hinzu.
steps:
- checkout: self
persistCredentials: true
Weitere Informationen zum checkout Schritt finden Sie in der steps.checkout Definition.
Bereinigen des lokalen Repositorys
Die Buildpipeline bereinigt bestimmte Änderungen am lokalen Repository nicht automatisch, wie zum Beispiel das Löschen lokaler Verzweigungen oder das Rückgängigmachen lokaler git config Änderungen. Wenn Bei der Verwendung eines selbst gehosteten Agents Probleme auftreten, können Sie das Repository bereinigen, bevor Sie den Build ausführen.
Im Allgemeinen müssen Sie das Repository nicht bereinigen, um die Leistung von selbst gehosteten Agents zu beschleunigen. Die Reinigung ist für Microsoft gehostete Agents nicht wirksam, da sie jedes Mal einen neuen Agent verwenden. Weitere Informationen finden Sie unter Bereinigung des lokalen Repositories des Agenten.
So bereinigen Sie das Repository, bevor Sie den Build ausführen:
Legen Sie clean auf true im Schritt checkout fest. Diese Option führt git clean -ffdx gefolgt von git reset --hard HEAD aus, bevor abgerufen wird.
steps:
- checkout: self
clean: true
Wählen Sie Variablen im Pipeline-Editor aus, erstellen oder ändern Sie die Build.Clean Variable, und legen Sie den Wert auf source.
Git-Befehlsbeispiele
In den folgenden Beispielen werden Git-Befehle in einer Befehlszeilenaufgabe und einer Batchskriptaufgabe ausgeführt.
Auflisten der Dateien in Ihrem Repository
Um die Dateien im Git-Repository auflisten zu können, verwenden Sie die Befehlszeilenaufgabe in einer YAML-Pipeline wie folgt:
- task: CmdLine@2
inputs:
script: 'git ls-files'
Zusammenführen einer Feature-Verzweigung zum Hauptteil
Im folgenden klassischen Pipeline-Beispiel wird ein CI-Build zusammengeführt, wenn der Build erfolgreich ist, zu main.
Erstellen Sie eine Datei namensmerge.bat im Stammverzeichnis Ihres Repositorys mit dem folgenden Inhalt:
@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 statusAktivieren Sie auf der Registerkarte "Trigger" in Ihrer klassischen Pipeline das Kontrollkästchen, um die kontinuierliche Integration zu aktivieren.
Wählen Sie unter "Verzweigungsfilter " und "Pfadfilter" Verzweigungen und Pfade aus, die aus dem Build eingeschlossen oder ausgeschlossen werden sollen.
Fügen Sie ein Batchskript als letzte Aufgabe in Ihrer Pipeline hinzu.
Geben Sie unter "Pfad " in der Aufgabenkonfiguration den Speicherort und den Namen der merge.bat Datei ein.
Häufig gestellte Fragen
Kann ich Git-Befehle ausführen, wenn sich mein Remote-Repository in GitHub oder einem anderen Git-Dienst wie Bitbucket Cloud befindet?
Ja, Sie können Git-Befehle ausführen, wenn sich Ihr Remote-Repository in GitHub oder einem anderen Git-Dienst wie Bitbucket Cloud befindet.
Welche Aufgaben kann ich zum Ausführen von Git-Befehlen verwenden?
Sie können die folgenden Azure Pipelines Aufgaben verwenden, um Git-Befehle auszuführen:
Wie kann ich vermeiden, einen CI-Build auszulösen, wenn das Skript pusht?
Um zu vermeiden, dass ein CI-Build ausgelöst wird, wenn das Skript pusht, fügen Sie [skip ci] Ihrer Commit-Nachricht oder -Beschreibung hinzu. Beispiel:
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 auch eine der folgenden Variationen für Commits für Azure Repos Git, Bitbucket Cloud, GitHub oder GitHub Enterprise Server verwenden:
-
[skip ci]oder[ci skip] -
skip-checks: trueoderskip-checks:true -
[skip azurepipelines]oder[azurepipelines skip] -
[skip azpipelines]oder[azpipelines skip] -
[skip azp]oder[azp skip] ***NO_CI***
Benötige ich einen Agenten für das Ausführen von Pipelines?
Ja, Sie benötigen mindestens einen Agent , um Ihre Build- oder Releasepipeline auszuführen.
Wie kann ich Probleme beheben?
Siehe Fehlerbehebung bei Pipelineausführungen.
Wie kann ich das Problem beheben, dass ich keinen Standard-Agentpool auswählen kann oder dass ich meine Pipeline nicht in die Warteschlange einreihen kann?
Siehe Erstellen und Verwalten von Agentpools.
Wie kann ich das Problem bei meinem NuGet-Pushvorgang "Fehler: Kann kein lokales Ausstellerzertifikat abrufen" lösen?
Sie können dieses Problem beheben, indem Sie ein vertrauenswürdiges Stammzertifikat hinzufügen. Fügen Sie dem Build-Agenten entweder die NODE_EXTRA_CA_CERTS=file Umgebungsvariable hinzu, oder fügen Sie in Ihrer Pipeline die NODE.EXTRA.CA.CERTS=file Aufgabenvariable hinzu.
Weitere Informationen zu dieser Variablen finden Sie in der Node.js-Dokumentation unter NODE_EXTRA_CA_CERTS=datei . Anweisungen zum Festlegen einer Variablen in Ihrer Pipeline finden Sie unter Festlegen von Variablen in einer Pipeline.
Warum werden einige dieser Features in meinem lokalen Azure DevOps Server nicht angezeigt?
Einige dieser Features sind nur für Azure DevOps Services und nicht für lokale Azure DevOps Server verfügbar. Einige Features sind nur in der neuesten Version von Azure DevOps Server verfügbar.