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.
Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie zu Ihrem Projekt.
Navigieren Sie in Ihrem Projekt zur Seite Pipelines. Wählen Sie dann die Aktion zum Erstellen einer neuen Pipeline aus.
Führen Sie die Schritte des Assistenten aus. Wählen Sie zuerst GitHub als Speicherort Ihres Quellcodes aus.
Möglicherweise werden Sie zu GitHub weitergeleitet, um sich anzumelden. Geben Sie in diesem Fall Ihre Anmeldeinformationen für GitHub ein.
Wenn die Liste der Repositories erscheint, wählen Sie Ihr Anaconda-Beispiel-Repository.
Azure Pipelines analysiert den Code in Ihrem Repository und erkennt eine vorhandene
azure-pipelines.yml
Datei.Klicken Sie auf Run (Ausführen).
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 myEnvironment
installiert.
- 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.
Beispiele für die Verwendung call
in einer Pipeline.
Wie kann ich meine Tests mit mehreren Versionen von Python ausführen?
Weitere Informationen finden Sie unter Erstellen von Python-Apps in Azure Pipelines.