Köra pipelines med Anaconda-miljöer
Azure DevOps Services
Lär dig hur du konfigurerar och använder Anaconda med Python i din pipeline. Anaconda är en Python-distribution för datavetenskap och maskininlärning.
Kom igång
Följ de här anvisningarna för att konfigurera en pipeline för en Python-exempelapp med Anaconda-miljön.
Logga in på din Azure DevOps-organisation och gå till projektet.
I projektet navigerar du till sidan Pipelines . Välj sedan åtgärden för att skapa en ny pipeline.
Gå igenom stegen i guiden genom att först välja GitHub som plats för källkoden.
Du kan omdirigeras till GitHub för att logga in. I så fall anger du dina GitHub-autentiseringsuppgifter.
När listan med lagringsplatser visas väljer du din Anaconda-exempellagringsplats.
Azure Pipelines analyserar koden på lagringsplatsen och identifierar en befintlig
azure-pipelines.yml
fil.Markera Kör.
En ny körning startas. Vänta tills körningen har slutförts.
Dricks
Om du vill göra ändringar i YAML-filen enligt beskrivningen i det här avsnittet väljer du pipelinen på sidan Pipelines och sedan Redigera azure-pipelines.yml
filen.
Lägga till conda i systemsökvägen
På värdbaserade agenter utelämnas PATH
conda som standard för att förhindra att python-versionen står i konflikt med andra installerade versioner. Agentkommandot task.prependpath
gör det tillgängligt för alla efterföljande steg.
- bash: echo "##vso[task.prependpath]$CONDA/bin"
displayName: Add conda to PATH
Skapa en miljö
Från kommandoradsargument
Kommandot conda create
skapar en miljö med de argument som du skickar den till.
- bash: conda create --yes --quiet --name myEnvironment
displayName: Create Anaconda environment
Från YAML
Du kan checka in en environment.yml
fil till lagringsplatsen som definierar konfigurationen för en Anaconda-miljö.
- script: conda env create --quiet --file environment.yml
displayName: Create Anaconda environment
Kommentar
Om du använder en lokalt installerad agent och inte tar bort miljön i slutet får du ett fel i nästa version eftersom miljön redan finns. Lös problemet genom att --force
använda argumentet : conda env create --quiet --force --file environment.yml
.
Kommentar
Om du använder lokalt installerade agenter som delar lagring och kör jobb parallellt med samma Anaconda-miljöer kan det uppstå konflikter mellan dessa miljöer.
Lös problemet genom att --name
använda argumentet och en unik identifierare som argumentvärde, till exempel en sammanlänkning med $(Build.BuildNumber)
byggvariabeln.
Installera paket från Anaconda
Följande YAML installerar scipy
paketet i conda-miljön med namnet myEnvironment
.
- bash: |
source activate myEnvironment
conda install --yes --quiet --name myEnvironment scipy
displayName: Install Anaconda packages
Köra pipelinesteg i en Anaconda-miljö
Kommentar
Varje byggsteg körs i sin egen process.
När du aktiverar en Anaconda-miljö kommer den att redigera PATH
och göra andra ändringar i den aktuella processen.
Därför måste en Anaconda-miljö aktiveras separat för varje steg.
- bash: |
source activate myEnvironment
python -m pytest --junitxml=junit/unit-test.xml
displayName: pytest
- task: PublishTestResults@2
inputs:
testResultsFiles: 'junit/*.xml'
condition: succeededOrFailed()
Vanliga frågor och svar
Varför får jag felmeddelandet "Behörighet nekad"?
På värdbaserad macOS har agentanvändaren inte ägarskap för katalogen där Miniconda är installerat. En korrigering finns på fliken "Värdbaserad macOS" under Lägg till conda i systemsökvägen.
Varför slutar mitt bygge att svara i ett conda create
eller conda install
ett steg?
Om du glömmer att skicka --yes
kommer conda att stoppa och vänta på användarinteraktion.
Varför stoppas mitt skript i Windows när det har aktiverat miljön?
I Windows activate
är ett Batch-skript. Du måste använda call
kommandot för att fortsätta köra skriptet efter aktivering.
Se exempel på användning call
i en pipeline.