Ausführen von Pipelines mit Anaconda-Umgebungen

Azure DevOps Services

Erfahren Sie, wie Sie Anaconda mit Python in Ihrer Pipeline einrichten und verwenden. Anaconda ist eine Python-Verteilung für Data Science und maschinelles Lernen.

Erste Schritte

Befolgen Sie diese Anweisungen, um eine Pipeline für eine Python-Beispiel-App mit Anaconda-Umgebung einzurichten.

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie zu Ihrem Projekt.

  2. Navigieren Sie in Ihrem Projekt zur Seite Pipelines. Wählen Sie dann die Aktion zum Erstellen einer neuen Pipeline aus.

  3. Führen Sie die Schritte des Assistenten aus. Wählen Sie zuerst GitHub als Speicherort Ihres Quellcodes aus.

  4. Möglicherweise werden Sie zu GitHub weitergeleitet, um sich anzumelden. Geben Sie in diesem Fall Ihre Anmeldeinformationen für GitHub ein.

  5. Wenn die Liste der Repositories erscheint, wählen Sie Ihr Anaconda-Beispiel-Repository.

  6. Azure Pipelines analysiert den Code in Ihrem Repository und erkennt eine vorhandene azure-pipelines.yml Datei.

  7. Klicken Sie auf Run (Ausführen).

  8. Eine neue Ausführung wird gestartet. Warten Sie, bis die Ausführung beendet ist.

Tipp

Um Änderungen an der YAML-Datei vorzunehmen, wie in diesem Thema beschrieben, wählen Sie die Pipeline auf der Seite Pipelines und dann Datei bearbeiten aus azure-pipelines.yml .

Hinzufügen von conda zum Systempfad

Auf gehosteten Agents wird Conda standardmäßig nicht verwendet PATH , um zu gewährleisten, dass die Python-Version mit anderen installierten Versionen in Konflikt steht. Der task.prependpath Agent-Befehl stellt ihn für alle nachfolgenden Schritte zur Verfügung.

- bash: echo "##vso[task.prependpath]$CONDA/bin"
  displayName: Add conda to PATH

Erstellen einer Umgebung

Aus Befehlszeilenargumenten

Der conda create Befehl erstellt eine Umgebung mit den Argumenten, die Sie übergeben.

- bash: conda create --yes --quiet --name myEnvironment
  displayName: Create Anaconda environment

Über YAML

Sie können eine environment.yml Datei in Ihr Repository einchecken, die die Konfiguration für eine Anaconda-Umgebung definiert.

- script: conda env create --quiet --file environment.yml
  displayName: Create Anaconda environment

Hinweis

Wenn Sie einen selbstgehosteten Agent verwenden und die Umgebung nicht am Ende entfernen, erhalten Sie beim nächsten Build eine Fehlermeldung, da die Umgebung bereits vorhanden ist. Verwenden Sie zum Auflösen das --force Argument: conda env create --quiet --force --file environment.yml.

Hinweis

Wenn Sie selbstgehostete Agents verwenden, die Speicher gemeinsam nutzen und Aufträge parallel mit denselben Anaconda-Umgebungen ausführen, kann es zu Konflikten zwischen diesen Umgebungen kommen. Verwenden Sie zum Auflösen das --name Argument und einen eindeutigen Bezeichner als Argumentwert, z. B. eine Verkettung mit der $(Build.BuildNumber) Buildvariable.

Installieren von Paketen aus Anaconda

Mit dem folgenden YAML wird das scipy Paket in der Conda-Umgebung namens myEnvironmentinstalliert.

- bash: |
    source activate myEnvironment
    conda install --yes --quiet --name myEnvironment scipy
  displayName: Install Anaconda packages

Ausführen von Pipelineschritten in einer Anaconda-Umgebung

Hinweis

Jeder Build-Schritt läuft in einem eigenen Prozess ab. Wenn Sie eine Anaconda-Umgebung aktivieren, wird sie bearbeitet PATH und nimmt weitere Änderungen am aktuellen Prozess vor. Daher muss eine Anaconda-Umgebung für jeden Schritt separat aktiviert werden.

- bash: |
    source activate myEnvironment
    python -m pytest --junitxml=junit/unit-test.xml
  displayName: pytest

- task: PublishTestResults@2
  inputs:
    testResultsFiles: 'junit/*.xml'
  condition: succeededOrFailed()

Häufig gestellte Fragen

Warum erhalte ich den Fehler "Berechtigung verweigert"?

Unter gehostetem macOS besitzt der Agent-Benutzer nicht den Besitz des Verzeichnisses, in dem Miniconda installiert ist. Eine Korrektur finden Sie auf der Registerkarte "Gehostetes macOS" unter Hinzufügen von Conda zu Ihrem Systempfad.

Warum reagiert mein Build nicht mehr auf einen conda create oder conda install Schritt?

Wenn Sie vergessen, zu bestehen --yes, wird conda angehalten und auf die Benutzerinteraktion gewartet.

Warum wird mein Skript unter Windows beendet, nachdem es die Umgebung aktiviert hat?

Unter Windows activate ist ein Batch-Skript. Sie müssen den call Befehl verwenden, um die Ausführung Ihres Skripts nach der Aktivierung fortzusetzen. Sehen Sie sich Beispiele für die Verwendung callin einer Pipeline an.

Wie kann ich meine Tests mit mehreren Versionen von Python ausführen?

Weitere Informationen finden Sie unter Erstellen von Python-Apps in Azure Pipelines.