Pijplijnen uitvoeren met Anaconda-omgevingen

Azure DevOps Services

Meer informatie over het instellen en gebruiken van Anaconda met Python in uw pijplijn. Anaconda is een Python-distributie voor gegevenswetenschap en machine learning.

Aan de slag

Volg deze instructies om een pijplijn in te stellen voor een Python-voorbeeld-app met een Anaconda-omgeving.

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer naar uw project.

  2. Navigeer in het project naar de pagina Pijplijnen. Kies vervolgens de actie om een nieuwe pijplijn te maken.

  3. Doorloop de stappen van de wizard door eerst GitHub te selecteren als de locatie van de broncode.

  4. U wordt mogelijk omgeleid naar GitHub om u aan te melden. Voer in dat geval uw GitHub-referenties in.

  5. Wanneer de lijst met opslagplaatsen wordt weergegeven, selecteert u uw Anaconda-voorbeeldopslagplaats.

  6. Azure Pipelines analyseert de code in uw opslagplaats en detecteert een bestaand azure-pipelines.yml bestand.

  7. Selecteer Uitvoeren.

  8. Er wordt een nieuwe run gestart. Wacht tot de run is voltooid.

Tip

Als u wijzigingen wilt aanbrengen in het YAML-bestand, zoals beschreven in dit onderwerp, selecteert u de pijplijn op de pagina Pijplijnen en vervolgens Hetazure-pipelines.yml bestand bewerken.

Conda toevoegen aan uw systeempad

Op gehoste agents wordt conda standaard buitengesloten PATH om te voorkomen dat de Python-versie conflicteert met andere geïnstalleerde versies. De task.prependpath agentopdracht maakt deze beschikbaar voor alle volgende stappen.

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

Een omgeving maken

Van opdrachtregelargumenten

Met conda create de opdracht wordt een omgeving gemaakt met de argumenten die u doorgeeft.

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

Vanuit YAML

U kunt een environment.yml bestand inchecken in uw opslagplaats waarin de configuratie voor een Anaconda-omgeving wordt gedefinieerd.

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

Notitie

Als u een zelf-hostende agent gebruikt en de omgeving aan het einde niet verwijdert, krijgt u een foutmelding over de volgende build omdat de omgeving al bestaat. Gebruik het argument om dit --force op te lossen: conda env create --quiet --force --file environment.yml.

Notitie

Als u zelf-hostende agents gebruikt die opslag delen en taken parallel uitvoert met dezelfde Anaconda-omgevingen, zijn er mogelijk conflicten tussen deze omgevingen. U kunt dit oplossen door het --name argument en een unieke id als argumentwaarde te gebruiken, zoals een samenvoeging met de $(Build.BuildNumber) buildvariabele.

Pakketten van Anaconda installeren

Met de volgende YAML wordt het scipy pakket geïnstalleerd in de Conda-omgeving met de naam myEnvironment.

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

Pijplijnstappen uitvoeren in een Anaconda-omgeving

Notitie

Elke buildstap wordt in een eigen proces uitgevoerd. Wanneer u een Anaconda-omgeving activeert, worden deze bewerkt PATH en andere wijzigingen aangebracht in het huidige proces. Daarom moet voor elke stap een Anaconda-omgeving afzonderlijk worden geactiveerd.

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

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

Veelgestelde vragen

Waarom krijg ik de fout 'Machtiging geweigerd'?

In gehoste macOS is de agentgebruiker niet eigenaar van de map waarin Miniconda is geïnstalleerd. Zie het tabblad 'Gehoste macOS' onder Conda toevoegen aan uw systeempad voor een oplossing.

Waarom reageert mijn build niet meer op een conda create of-stap conda install ?

Als u vergeet door te geven --yes, stopt conda en wacht op interactie van de gebruiker.

Waarom stopt mijn script in Windows nadat de omgeving is geactiveerd?

In Windows activate is een Batch-script. U moet de call opdracht gebruiken om het uitvoeren van het script te hervatten na het activeren. Bekijk voorbeelden van het gebruik callin een pijplijn.

Hoe kan ik mijn tests uitvoeren met meerdere versies van Python?

Zie Python-apps bouwen in Azure Pipelines.