Eseguire pipeline con ambienti Anaconda

Servizi di Azure DevOps

Informazioni su come configurare e usare Anaconda con Python nella pipeline. Anaconda è una distribuzione Python per data science e Machine Learning.

Operazioni preliminari

Seguire queste istruzioni per configurare una pipeline per un'app Python di esempio con ambiente Anaconda.

  1. Accedere all'organizzazione di Azure DevOps e passare al progetto.

  2. Nel progetto passare alla pagina Pipeline. Quindi scegliere l'azione per creare una nuova pipeline.

  3. Eseguire i passaggi della procedura guidata selezionando prima di tutto GitHub come posizione del codice sorgente.

  4. Si potrebbe essere reindirizzati a GitHub per l'accesso. In questo caso, immettere le credenziali di GitHub.

  5. Quando viene visualizzato l'elenco dei repository, selezionare il repository di esempio Anaconda.

  6. Azure Pipelines analizzerà il codice nel repository e rileverà un file esistente azure-pipelines.yml .

  7. Selezionare Esegui.

  8. Viene avviata una nuova esecuzione. Attendere il completamento dell'esecuzione.

Suggerimento

Per apportare modifiche al file YAML come descritto in questo argomento, selezionare la pipeline nella pagina Pipeline e quindi Modificare il azure-pipelines.yml file.

Aggiungere conda al percorso di sistema

Negli agenti ospitati conda non è PATH più disponibile per impostazione predefinita per impedire che la versione di Python sia in conflitto con altre versioni installate. Il task.prependpath comando agent lo renderà disponibile per tutti i passaggi successivi.

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

Crea un ambiente

Dagli argomenti della riga di comando

Il conda create comando creerà un ambiente con gli argomenti passati.

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

Da YAML

È possibile archiviare un environment.yml file nel repository che definisce la configurazione per un ambiente Anaconda.

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

Nota

Se si usa un agente self-hosted e non si rimuove l'ambiente alla fine, verrà visualizzato un errore nella compilazione successiva perché l'ambiente esiste già. Per risolvere il problema, usare l'argomento --force : conda env create --quiet --force --file environment.yml.

Nota

Se si usano agenti self-hosted che condividono l'archiviazione e si eseguono processi in parallelo usando gli stessi ambienti Anaconda, potrebbero verificarsi conflitti tra tali ambienti. Per risolvere il problema, usare l'argomento --name e un identificatore univoco come valore dell'argomento, ad esempio una concatenazione con la variabile di $(Build.BuildNumber) compilazione.

Installare pacchetti da Anaconda

Il codice YAML seguente installa il scipy pacchetto nell'ambiente conda denominato myEnvironment.

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

Eseguire i passaggi della pipeline in un ambiente Anaconda

Nota

Ogni passaggio di compilazione viene eseguito nel proprio processo. Quando si attiva un ambiente Anaconda, verrà modificato PATH e apportato altre modifiche al processo corrente. Pertanto, un ambiente Anaconda deve essere attivato separatamente per ogni passaggio.

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

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

Domande frequenti

Perché viene visualizzato un errore "Autorizzazione negata"?

In Hosted macOS l'utente dell'agente non ha la proprietà della directory in cui è installato Miniconda. Per una correzione, vedere la scheda "Hosted macOS" in Add conda to your system path (Aggiungi conda al percorso di sistema).

Perché la compilazione smette di rispondere in un conda create passaggio o conda install ?

Se si dimentica di passare --yes, conda si arresterà e attenderà l'interazione dell'utente.

Perché lo script viene arrestato in Windows dopo l'attivazione dell'ambiente?

In Windows è activate uno script batch. È necessario usare il comando per riprendere l'esecuzione call dello script dopo l'attivazione. Vedere esempi di uso call in una pipeline.

Come è possibile eseguire i test con più versioni di Python?

Vedere Creare app Python in Azure Pipelines.