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

  1. Wechseln Sie zur Seite mit den Projekteinstellungen für Ihre organization unter Organisationseinstellungen>Allgemeine>Projekte.

    Navigieren Sie zu Ihren Organisationseinstellungen

  2. Wählen Sie das Projekt aus, das Sie bearbeiten möchten.

    Wählen Sie Ihr Projekt aus.

  3. Wählen Sie unter Projekteinstellungendie Option Repositorys aus. Wählen Sie das Repository aus, auf dem Sie Git-Befehle ausführen möchten.

  4. Wählen Sie Sicherheit aus, um die Repositorysicherheit zu bearbeiten.

    „Sicherheit auswählen

  5. 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

Projekt verwalten

Wenn diese Seite angezeigt wird, wählen Sie das Repository und dann den Link aus:

Systemsteuerung im Vordergrund zum Projekt

Registerkarte „Steuerelementsteuerung

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.

Berechtigungen

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

Fügen Sie einen checkout Abschnitt hinzu, der persistCredentials auf festgelegt ist true.

steps:
- checkout: self
  persistCredentials: true

Erfahren Sie mehr über checkout.

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:

Stellen Sie sicher, dass checkoutclean auf truefestgelegt hat.

steps:
- checkout: self
  clean: true

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?

Batchskript

Befehlszeile

PowerShell

Shellskript

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 oder skip-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.