Dela via


Köra pipelines med Anaconda-miljöer

Azure DevOps-tjänster

Konfigurera och använda Anaconda med Python i din pipeline. Anaconda är en Python-distribution för datavetenskap och maskininlärning.

Förutsättningar

Python är förinstallerat på agenter som är Microsoft-värdbaserade för Linux, macOS och Windows. Du behöver inte konfigurera något mer för att skapa Python-projekt. Information om vilka Python-versioner som är förinstallerade finns i Programvara.

Produkt Requirements
Azure DevOps – Ett Azure DevOps-projekt.
– En möjlighet att köra pipelines på Microsoft-hanterade agenter. Du kan antingen köpa ett parallellt jobb eller begära en kostnadsfri nivå.
– Grundläggande kunskaper om YAML och Azure Pipelines. Mer information finns i Skapa din första pipeline.
- Behörigheter:
     – Om du vill skapa en pipeline: du måste vara i gruppen Deltagare och gruppen måste ha behörigheten Skapa byggpipeline inställd på Tillåt. Medlemmar i gruppen Projektadministratörer kan hantera pipelines.
    – För att skapa tjänstanslutningar: Du måste ha rollen Administratör eller Skapare för tjänstanslutningar.
GitHub – Ett GitHub-konto .
– En GitHub-tjänstanslutning för att auktorisera Azure Pipelines.

Kom igång

Följ de här anvisningarna för att konfigurera en pipeline för en Python-exempelapp med Anaconda-miljön.

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

  2. I projektet navigerar du till sidan Pipelines . 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 med 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. Markera Kör.

  8. 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 den här artikeln väljer du pipelinen på sidan Pipelines och sedan Redigeraazure-pipelines.yml filen.

Lägga till conda i systemsökvägen

värdbaserade agenter ingår inte conda som standard för att undvika att Python-versionen hamnar i konflikt med andra installerade versioner. task.prependpath Använd agentkommandot för att göra conda tillgängligt för alla senare 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.

- 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. Åtgärda detta genom att ta bort miljön innan du skapar en ny med conda env remove --name your-env-name.

Kommentar

Om du använder lokalt installerade agenter som delar lagrings- och körningsjobb parallellt med samma Anaconda-miljöer kan det uppstå konflikter mellan dessa miljöer. Åtgärda detta genom att använda argumentet --name och en unik identifierare som argumentvärde, till exempel en kombination med byggvariabeln $(Build.BuildNumber).

Installera paket från Anaconda

Följande YAML installerar scipy paketet i conda-miljön med namnet myEnvironment.

- bash: |
    conda 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ö redigerar den PATH och gör andra ändringar i sin aktuella process. Aktivera därför en Anaconda-miljö separat för varje steg.

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

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

Vanliga frågor

Varför får jag felmeddelandet "Behörighet nekad"?

På värdbaserad macOS äger agentanvändaren inte katalogen där Miniconda är installerat. Åtgärda problemet genom att gå till fliken "Hostad macOS" under Lägg till conda i din systemsökväg.

Varför slutar mitt bygge att svara i ett conda create eller conda install ett steg?

Om du inte skickar --yesstannar conda och väntar på användarindata.

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 calli en pipeline.

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

Gå till Skapa Python-appar i Azure Pipelines.