Shellskriptaufgabe

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Verwenden Sie diese Aufgabe, um ein Shellskript mithilfe von Bash auszuführen.

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.

Forderungen

sh

YAML-Codeausschnitt

- task: ShellScript@2
  inputs:
    scriptPath:
    #args: '' # Optional
    #disableAutoCwd: false # Optional
    #cwd: '' # Optional
    #failOnStandardError: false

Argumente

Argument BESCHREIBUNG
Skriptpfad Relativer Pfad vom Repo-Stamm zur Shellskriptdatei, die Sie ausführen möchten.
Argumente Argumente, die Sie an das Skript übergeben möchten.

Erweiterte Optionen

Argument BESCHREIBUNG
Arbeitsverzeichnis Arbeitsverzeichnis, in dem Sie das Skript ausführen möchten. Wenn Sie es leer lassen, ist es Ordner, in dem sich das Skript befindet.
Fehler beim Standardfehler Wählen Sie aus, ob diese Aufgabe fehlschlägt, wenn Fehler im StandardError-Stream geschrieben werden.

Aufgabensteuerungsoptionen

Beispiel

Erstellen Sie test.sh am Stamm Ihres Repo. Es wird empfohlen, diese Datei aus einer Linux-Umgebung (z. B. einem echten Linux-Computer oder Windows-Subsystem für Linux) zu erstellen, sodass Zeilenende korrekt sind. Vergessen Sie es auch nicht, chmod +x test.sh bevor Sie es commiten.

#!/bin/bash
echo "Hello World"
echo "AGENT_WORKFOLDER is $AGENT_WORKFOLDER"
echo "AGENT_WORKFOLDER contents:"
ls -1 $AGENT_WORKFOLDER
echo "AGENT_BUILDDIRECTORY is $AGENT_BUILDDIRECTORY"
echo "AGENT_BUILDDIRECTORY contents:"
ls -1 $AGENT_BUILDDIRECTORY
echo "SYSTEM_HOSTTYPE is $SYSTEM_HOSTTYPE"
echo "Over and out."

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


Hilfsprogramm: Shell-Skript

Führen Sie test.bat aus.

  • Skriptpfad: test.sh

In diesem Beispiel wird auch mit Releasepipelinen funktioniert.

Quelle öffnen

Diese Aufgabe wird auf GitHub Open Source. Feedback und Beiträge sind willkommen.

Häufig gestellte Fragen

Wo kann ich über Bash-Skripts erfahren?

Anfänger/BashScripting , um zu beginnen.

Tolle Bash , um tiefer zu gehen.

Gewusst wie eine Variable festlegen, damit sie von nachfolgenden Skripts und Aufgaben gelesen werden kann?

Weitere Informationen zum Definieren von Buildvariablen in einem Skript finden Sie unter Definieren und Ändern ihrer Buildvariablen in einem Skript.

Weitere Informationen zum Definieren von Releasevariablen in einem Skript finden Sie unter Definieren und Ändern ihrer Releasevariablen in einem Skript

F: Ich habe Probleme beim Veröffentlichen meiner Artefakte. Wie kann ich die detaillierten Protokolle anzeigen?

So aktivieren Sie detaillierte Protokolle für Ihre Pipeline:

  1. Bearbeiten Der Pipeline und Auswählen von Variablen
  2. Hinzufügen einer neuen Variable mit dem Namen System.Debug und dem Wert true
  3. Speichern

F: Welche Variablen stehen mir zur Verfügung?

A: $(Build.SourcesDirectory) und $(Agent.BuildDirectory) sind nur wenige der Variablen, die Sie in Ihrer Pipeline verwenden können. Variablen sind als Ausdrücke oder Skripts verfügbar.

Weitere Informationen zu den verschiedenen Variablentypen finden Sie unter Definieren von Variablen, vordefinierten Variablenund klassischen Versionen und Artefakten .

F: Aufgabe ermöglicht es mir, Artefakte im Bereitstellungsauftrag in yaml-Pipeline zu veröffentlichen, aber ich bin nicht in der Lage, es in der downstream-Pipeline zu verwenden?

A: Bereitstellungsaufträge verfügen nicht über den Kontext von Quellzweigen und sind daher nicht für die Veröffentlichung von Artefakten geeignet. Sie wurden in erster Linie zum Verbrauch von Artefakten entwickelt. Eine Problemumgehung wäre es, diese Logik in einen separaten Auftrag zu isolieren (mit Abhängigkeiten zu Ihren Bereitstellungsaufträgen).

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.