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.
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Nel progetto passare alla pagina Pipeline. Quindi scegliere l'azione per creare una nuova pipeline.
Eseguire i passaggi della procedura guidata selezionando prima di tutto GitHub come posizione del codice sorgente.
Si potrebbe essere reindirizzati a GitHub per l'accesso. In questo caso, immettere le credenziali di GitHub.
Quando viene visualizzato l'elenco dei repository, selezionare il repository di esempio Anaconda.
Azure Pipelines analizzerà il codice nel repository e rileverà un file esistente
azure-pipelines.yml
.Selezionare Esegui.
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.