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 stehen für Erstellungsworkflows auf von Microsoft gehosteten und selbst gehosteten Agents zur Verfügung. Beispielsweise können Sie die Verzweigung zusammenführen, nachdem ein CI-Build (Continuous Integration) für einen Featurezweig abgeschlossen ist. 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 GitHub die Standardidentität Ihres Azure DevOps-Kontos verwendet. Legen Sie bei Bedarf den GitHub-Benutzer als ersten Schritt nach dem Auschecken fest.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Erteilen von Berechtigungen für den Builddienst
Der Projektbuilddienst muss über Berechtigungen zum Schreiben in das Quell-Repository verfügen. Legen Sie die erforderlichen Berechtigungen wie folgt fest:
Wählen Sie in den Projekteinstellungen für Ihr Projekt Repositorys unter "Repositorys" 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 Builddienstidentität aus. Achten Sie darauf, den Projektnamen< Builddienst (>Organisation<) unter "Benutzer" und nicht unter "Project Collection Build Service Accounts" auszuwählen>. Standardmäßig kann diese Identität aus dem Repository gelesen werden, aber keine Änderungen daran senden.
Wählen Sie in der Liste neben den für die Git-Befehle erforderlichen Git-Befehlen die Option "Zulassen" aus, in der Regel "Verzweigung erstellen", "Mitwirken", " Lesen" und " Erstellen".
Zulassen, dass Skripts auf das Systemtoken zugreifen
So ermöglichen Sie Skripts für den Zugriff auf das GitHub-OAuth-Token:
Fügen Sie ihrer YAML-Pipeline einen checkout Schritt hinzu, der persistCredentials auf " festgelegt" truefestgelegt ist.
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, z. B. 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 von Microsoft gehostete Agents nicht wirksam, da sie jedes Mal einen neuen Agent verwenden. Weitere Informationen finden Sie unter Bereinigen des lokalen Repositorys für den Agent.
So bereinigen Sie das Repository, bevor Sie den Build ausführen:
Legen Sie clean diese true Einstellung im Schritt festcheckout. Diese Option wird vor dem Abrufen ausgeführt git clean -ffdxgit reset --hard HEAD .
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 Pipelinebeispiel wird ein CI-Build zusammengeführt, zu main dem der Build erfolgreich ist.
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 auf 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 Agent zum Ausführen von Pipelines?
Ja, Sie benötigen mindestens einen Agent , um Ihre Build- oder Releasepipeline auszuführen.
Wie kann ich Probleme beheben?
Siehe Problembehandlung bei Pipelineausführungen.
Wie kann ich beheben, dass ich keinen Standard-Agentpool auswählen oder meine Pipeline in die Warteschlange stellen kann?
Siehe Erstellen und Verwalten von Agentpools.
Wie kann ich meinen NuGet-Pushvorgang mit "Fehler: Kann kein lokales Ausstellerzertifikat abrufen" beheben?
Sie können dieses Problem beheben, indem Sie ein vertrauenswürdiges Stammzertifikat hinzufügen. Fügen Sie der Build-Agent entweder die NODE_EXTRA_CA_CERTS=file Umgebungsvariable hinzu, oder fügen Sie die NODE.EXTRA.CA.CERTS=file Aufgabenvariable in Ihrer Pipeline 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 nicht in meinem lokalen Azure DevOps-Server angezeigt?
Einige dieser Features sind nur in Azure DevOps Services verfügbar und nicht für lokale Azure DevOps Server verfügbar. Einige Features sind nur in der neuesten Version von Azure DevOps Server verfügbar.