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ö.

  1. Logga in på din Azure DevOps-organisation och navigera till projektet.

  2. Gå till sidan Pipelines i projektet. Välj sedan åtgärden för att skapa en ny pipeline.

  3. Gå igenom stegen i guiden genom att först välja GitHub som plats för källkoden.

  4. Du kan omdirigeras till GitHub för att logga in. I så fall anger du dina GitHub-autentiseringsuppgifter.

  5. När listan över lagringsplatser visas väljer du din Anaconda-exempellagringsplats.

  6. Azure Pipelines analyserar koden på din lagringsplats och identifierar en befintlig azure-pipelines.yml fil.

  7. Välj Kör.

  8. En ny körning startas. Vänta tills körningen har slutförts.

Tips

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 Redigeraazure-pipelines.yml filen.

Lägga till conda i systemsökvägen

värdbaserade agenter utelämnasPATH 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

Anteckning

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.

Anteckning

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 använda --name 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ö

Anteckning

Varje byggsteg körs i en 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 felet "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 bygget svara på ett conda create eller conda install ett steg?

Om du glömmer att skicka --yesslutar conda och väntar 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 när du har aktiverat. Se exempel på hur du använder calli en pipeline.

Hur kan jag köra mina tester med flera versioner av Python?

Se Skapa Python-appar i Azure Pipelines.