Delen via


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 totdat de uitvoering 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 bewerkt u het azure-pipelines.yml bestand.

Conda toevoegen aan uw systeempad

Bij gehoste agents is Conda standaard uitgeschakeld PATH om te voorkomen dat de Python-versie conflicteert met andere geïnstalleerde versies. De task.prependpath opdracht agent 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 bij uw opslagplaats waarmee 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 niet aan het einde verwijdert, krijgt u een foutmelding over de volgende build omdat de omgeving al bestaat. Gebruik het --force argument om dit 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, kunnen er conflicten optreden tussen deze omgevingen. Als u dit wilt oplossen, gebruikt u het --name argument en een unieke id als argumentwaarde, zoals een samenvoeging met de $(Build.BuildNumber) buildvariabele.

Pakketten installeren vanuit Anaconda

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, wordt deze bewerkt PATH en worden andere wijzigingen aangebracht in het huidige proces. Daarom moet een Anaconda-omgeving afzonderlijk worden geactiveerd voor elke stap.

- 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 foutmelding 'Machtiging geweigerd'?

In hosted macOS heeft de agentgebruiker geen eigendom van de map waar 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 conda install meer stappen?

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

Waarom stopt mijn script in Windows nadat het de omgeving heeft geactiveerd?

In Windows activate is een Batch-script. U moet de call opdracht gebruiken om het uitvoeren van uw script te hervatten nadat u het hebt geactiveerd. Bekijk voorbeelden van het gebruik call in een pijplijn.

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

Zie Python-apps bouwen in Azure Pipelines.