Executar pipelines com ambientes do Anaconda
Azure DevOps Services
Saiba como configurar e usar o Anaconda com o Python no seu pipeline. O Anaconda é uma distribuição do Python para a ciência de dados e o aprendizado de máquina.
Introdução
Siga as instruções a seguir para configurar um pipeline para um aplicativo Python de exemplo com o ambiente do Anaconda.
Entre na sua organização do Azure DevOps e navegue até seu projeto.
Em seu projeto, navegue até a página Pipelines. Em seguida, escolha a ação para criar um novo pipeline.
Percorra as etapas do assistente selecionando primeiro GitHub como o local do código-fonte.
Você pode ser redirecionado para o GitHub para então entrar. Nesse caso, insira suas credenciais do GitHub.
Quando a lista de repositórios for exibida, selecione o repositório de exemplo do Anaconda.
O Azure Pipelines analisará o código no seu repositório e detectará um arquivo
azure-pipelines.yml
existente.Selecione Executar.
Uma nova execução é iniciada. Aguarde a conclusão da execução.
Dica
Para fazer alterações no arquivo YAML, conforme descrito neste tópico, selecione o pipeline na página Pipelines, depois Edite o arquivo azure-pipelines.yml
.
Adicionar o conda ao caminho do sistema
Em agentes hospedados, o conda é deixado de fora do PATH
por padrão para impedir que sua versão do Python entre em conflito com outras versões instaladas. O comando do agente task.prependpath
o disponibilizará para todas as etapas subsequentes.
- bash: echo "##vso[task.prependpath]$CONDA/bin"
displayName: Add conda to PATH
Criar um ambiente
De argumentos de linha de comando
O comando conda create
criará um ambiente com os argumentos que você passar.
- bash: conda create --yes --quiet --name myEnvironment
displayName: Create Anaconda environment
Do YAML
Você pode incluir um arquivo environment.yml
para o repositório que define a configuração de um ambiente do Anaconda.
- script: conda env create --quiet --file environment.yml
displayName: Create Anaconda environment
Observação
Se estiver usando um agente auto-hospedado e não remover o ambiente no final, você receberá um erro na próxima compilação, pois o ambiente já existe. Para resolver, use o argumento --force
: conda env create --quiet --force --file environment.yml
.
Observação
Se estiver usando agentes auto-hospedados que estão compartilhando o armazenamento e executando trabalhos em paralelo usando os mesmos ambientes do Anaconda, pode haver conflitos entre esses ambientes.
Para resolver, use o argumento --name
e um identificador exclusivo como o valor do argumento, como uma concatenação com a variável de compilação $(Build.BuildNumber)
.
Instalar pacotes do Anaconda
O YAML a seguir instala o pacote scipy
no ambiente do conda chamado myEnvironment
.
- bash: |
source activate myEnvironment
conda install --yes --quiet --name myEnvironment scipy
displayName: Install Anaconda packages
Executar etapas do pipeline em um ambiente do Anaconda
Observação
Cada etapa de compilar é executada em seu próprio processo.
Ao ativar um ambiente do Anaconda, ele editará o PATH
e fará outras alterações em seu processo atual.
Portanto, deve-se ativar um ambiente do Anaconda separadamente para cada etapa.
- bash: |
source activate myEnvironment
python -m pytest --junitxml=junit/unit-test.xml
displayName: pytest
- task: PublishTestResults@2
inputs:
testResultsFiles: 'junit/*.xml'
condition: succeededOrFailed()
Perguntas frequentes
Por que estou recebendo um erro "Permissão negada"?
No macOS Hospedado, o usuário do agente não tem propriedade sobre o diretório em que o Miniconda está instalado. Para corrigir isso, confira a guia "macOS Hospedado" em Adicionar o conda ao caminho do sistema.
Por que minha compilação para de responder em uma etapa conda create
ou conda install
?
Se você esquecer de passar --yes
, o conda será interrompido e aguardará a interação do usuário.
Por que meu script no Windows para depois de ativar o ambiente?
No Windows, activate
é um script de Lote. Você deve usar o comando call
para retomar a execução do script após a ativação.
Veja exemplos de uso call
em um pipeline.