Exécuter des pipelines avec des environnements Anaconda

Azure DevOps Services

Découvrez comment configurer et utiliser Anaconda avec Python dans votre pipeline. Anaconda est une distribution Python pour la science des données et le Machine Learning.

Bien démarrer

Suivez ces instructions pour configurer un pipeline pour un exemple d’application Python avec un environnement Anaconda.

  1. Connectez-vous à votre organisation Azure DevOps et accédez à votre projet.

  2. Dans votre projet, accédez à la page Pipelines. Choisissez ensuite l’action pour créer un pipeline.

  3. Suivez les étapes de l’Assistant en sélectionnant d’abord GitHub comme emplacement du code source.

  4. Vous serez peut-être redirigé vers GitHub pour vous connecter. Si c’est le cas, entrez vos informations d’identification GitHub.

  5. Lorsque la liste des référentiels s’affiche, sélectionnez votre référentiel d’exemple Anaconda.

  6. Azure Pipelines analyse le code dans votre référentiel et détecte un fichier azure-pipelines.yml existant.

  7. Sélectionnez Exécuter.

  8. Une nouvelle exécution est lancée. Attendez la fin de l’exécution.

Conseil

Pour apporter des modifications au fichier YAML comme décrit dans cette rubrique, sélectionnez le pipeline dans la page Pipelines, puis Modifier pour modifier le fichier azure-pipelines.yml.

Ajouter conda à votre chemin d’accès système

Sur les agents hébergés, conda n'est pas inclus par défaut dans PATH pour éviter que sa version de Python n'entre en conflit avec d'autres versions installées. La commande de l’agent task.prependpath la rend disponible pour toutes les étapes suivantes.

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

Créer un environnement

À partir des arguments de la ligne de commande

La commande conda create crée un environnement avec les arguments que vous lui transmettez.

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

À partir de YAML

Vous pouvez archiver un fichier environment.yml dans votre référentiel qui définit la configuration d’un environnement Anaconda.

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

Notes

Si vous utilisez un agent auto-hébergé et que vous ne supprimez pas l’environnement à la fin, vous obtiendrez une erreur sur la prochaine build, car l’environnement existe déjà. Pour résoudre ce problème, utilisez l’argument --force : conda env create --quiet --force --file environment.yml.

Notes

Si vous utilisez des agents auto-hébergés qui partagent du stockage et exécutent des travaux en parallèle à l’aide des mêmes environnements Anaconda, il peut y avoir des conflits entre ces environnements. Pour résoudre ce problème, utilisez l’argument --name et un identificateur unique comme valeur d’argument, comme une concaténation avec la variable de build $(Build.BuildNumber).

Installer des packages à partir d’Anaconda

Le YAML suivant installe le package scipy dans l’environnement conda nommé myEnvironment.

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

Exécuter les étapes de pipeline dans un environnement Anaconda

Notes

Chaque étape de génération s’exécute dans son propre processus. Lorsque vous activez un environnement Anaconda, il modifie PATH et apporte d’autres modifications à son processus actuel. Par conséquent, un environnement Anaconda doit être activé séparément pour chaque étape.

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

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

FAQ

Pourquoi est-ce que je reçois une erreur « Autorisation refusée » ?

Sur un macOS hébergé, l’utilisateur de l’agent n’a pas la propriété du répertoire où Miniconda est installé. Pour obtenir un correctif, consultez l’onglet « macOS hébergé » sous Ajouter conda à votre chemin d’accès système.

Pourquoi ma build cesse-t-elle de répondre à une étape conda create ou conda install ?

Si vous oubliez de passer --yes, conda s’arrête et attend l’interaction de l’utilisateur.

Pourquoi mon script sur Windows s’arrête-t-il après avoir activé l’environnement ?

Sur Windows, activate est un script Batch. Vous devez utiliser la commande call pour reprendre l’exécution de votre script après l’activation. Consultez des exemples d’utilisation de calldans un pipeline.

Comment puis-je exécuter mes tests avec plusieurs versions de Python ?

Consultez Créer des applications Python dans Azure Pipelines.