Ausführen von Git-Befehlen in einem Skript

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Hinweis

In Microsoft Team Foundation Server (TFS) 2018 und früheren Versionen werden Build- und Release-Pipelines als Definitionen bezeichnet, Ausführungen werden als Builds bezeichnet, Dienstverbindungen werden als Dienstendpunkte bezeichnet, Stages werden als Umgebungen bezeichnet und Aufträge werden als Phasen bezeichnet.

Für einige Workflows benötigen Sie Ihre Buildpipeline, um Git-Befehle auszuführen. Wenn beispielsweise ein CI-Build auf einem Featurezweig abgeschlossen ist, möchte das Team möglicherweise die Verzweigung mit dem Hauptteil zusammenführen.

Git ist für von Microsoft gehostete Agents und lokale 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 als erster Schritt ausgeführt werden, 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 "Projekteinstellungen" für Ihre Organisation bei Organisation Einstellungen>GeneralProjects>.

    Select your organization settings.

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

    Select your project.

  3. Wählen Sie innerhalb Project EinstellungenRepositorys aus. Wählen Sie das Repository aus, auf dem Git-Befehle ausgeführt werden sollen.

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

    Choose Security to edit your repository security.

  5. Suchen Sie nach Project Sammlungsbuilddienst. Wählen Sie den Identitäts-Project Sammlungsbuilddienst ({Ihre Organisation}) (nicht die Gruppe Project Sammlungsbuilddienstkonten ({Ihre Organisation})) aus. Standardmäßig kann diese Identität aus dem Repo gelesen werden, kann jedoch keine Änderungen daran zurückschieben. Erteilen Sie berechtigungen, die für die Git-Befehle erforderlich sind, die Sie ausführen möchten. Normalerweise möchten Sie Folgendes erteilen:

    • Verzweigung erstellen: Ermöglichen
    • Beitragen: Ermöglichen
    • Lesen: Ermöglichen
    • Tag erstellen: Ermöglichen

Wechseln zur Registerkarte "Systemsteuerung" der Version

  • Azure Repos:https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol
  • Lokal: https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol

manage project

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

control panel top to project

control panel project version control tab

Wählen Sie auf der Registerkarte "Versionssteuerung" das Repository aus, in dem Sie Git-Befehle ausführen möchten, und wählen Sie dann Project Sammlungsbuilddienst aus. Standardmäßig kann diese Identität aus dem Repo gelesen werden, kann jedoch keine Änderungen daran zurückschieben.

permissions

Erteilen Sie berechtigungen, die für die Git-Befehle erforderlich sind, die Sie ausführen möchten. Normalerweise möchten Sie Folgendes erteilen:

  • Verzweigung erstellen: Ermöglichen
  • Beitragen: Ermöglichen
  • Lesen: Ermöglichen
  • Tag erstellen: Ermöglichen

Wenn Sie die Berechtigungen erteilt haben, stellen Sie sicher, dass Sie "Änderungen speichern" auswählen.

Zulassen, dass Skripts auf das Systemtoken zugreifen können

Fügen Sie einen checkout Abschnitt hinzu, der trueauf "set" festgelegt istpersistCredentials.

steps:
- checkout: self
  persistCredentials: true

Weitere Informationen zu checkout finden Sie hier.

Wählen Sie auf der Registerkarte "Optionen" die Option "Skripts zulassen" aus, um auf OAuth-Token zuzugreifen.

Stellen Sie sicher, dass Sie das lokale Repo bereinigen

Bestimmte Arten von Änderungen am lokalen Repository werden nicht automatisch von der Buildpipeline bereinigt. Stellen Sie daher folgendes sicher:

  • Löschen Sie lokale Verzweigungen, die Sie erstellen.
  • Rückgängigmachen von Git-Konfigurationsänderungen.

Wenn Probleme mit einem lokalen Agent auftreten, stellen Sie sicher, dass das Repo sauber ist:

Stellen Sie sicher, dass checkoutclean sie auf true.

steps:
- checkout: self
  clean: true
  • Legen Sie auf der Registerkarte "Repository" auf "True" fest.

  • Erstellen oder ändern Sie auf der Registerkarte "Variablen" die Build.Clean Variable, und legen Sie sie auf source

Beispiele

Auflisten der Dateien in Ihrem Repository

Fügen Sie auf der Registerkarte "Build " diese Aufgabe hinzu:

Aufgabe Argumente

Hilfsprogramm: Befehlszeile
Listet die Dateien im Git-Repo auf.
Tool: git

Argumente: ls-files

Zusammenführen einer Featurezweigung zum Hauptteil

Sie möchten, dass ein CI-Build mit dem Hauptvorgang zusammengeführt werden soll, wenn der Build erfolgreich ist.

Wählen Sie auf der Registerkarte "Triggers" die Option "Fortlaufende Integration" (CI) aus, und schließen Sie die zu erstellenden Verzweigungen ein.

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 " dies als letzte Aufgabe hinzu:

Aufgabe Argumente

Dienstprogramm: Batchskript
Führen Sie merge.bat aus.
Pfad: merge.bat

Häufig gestellte Fragen

Kann ich Git-Befehle ausführen, wenn sich mein Remote-Repo in GitHub oder einem anderen Git-Dienst wie Bitbucket Cloud befindet?

Ja

Welche Aufgaben kann ich zum Ausführen von Git-Befehlen verwenden?

Batchskript

Befehlszeile

PowerShell

Shellskript

Gewusst wie vermeiden, einen CI-Build auszulösen, wenn das Skript pusht?

Fügen Sie Ihrer Commitnachricht hinzu ***NO_CI*** . 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 Ihrer Commit-Nachricht oder -Beschreibung hinzu [skip ci] . 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 auch eine der nachstehenden Variationen verwenden. Dies wird für Commits für Azure Repos Git, Bitbucket Cloud, GitHub und GitHub Enterprise Server unterstützt.

  • [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.