Executar pipelines com ambientes Anaconda
Serviços de DevOps do Azure
Saiba como configurar e usar o Anaconda com Python em seu pipeline. Anaconda é uma distribuição Python para ciência de dados e aprendizado de máquina.
Começar agora
Siga estas instruções para configurar um pipeline para um aplicativo Python de exemplo com o ambiente Anaconda.
Entre em sua organização do Azure DevOps e navegue até seu projeto.
No 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 o GitHub como o local do seu código-fonte.
Poderá ser redirecionado para o GitHub para iniciar sessão. Em caso afirmativo, insira suas credenciais do GitHub.
Quando a lista de repositórios aparecer, selecione seu repositório de exemplo Anaconda.
O Azure Pipelines analisará o código em seu repositório e detetará um arquivo existente
azure-pipelines.yml
.Selecione Executar.
Uma nova execução é iniciada. Aguarde a conclusão da execução.
Gorjeta
Para fazer alterações no arquivo YAML conforme descrito neste tópico, selecione o pipeline na página Pipelines e edite o azure-pipelines.yml
arquivo.
Adicionar conda ao caminho do sistema
Em agentes hospedados, o conda é deixado de PATH
fora por padrão para evitar que sua versão Python entre em conflito com outras versões instaladas. O task.prependpath
comando agent 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 conda create
comando criará um ambiente com os argumentos que você passar.
- bash: conda create --yes --quiet --name myEnvironment
displayName: Create Anaconda environment
De YAML
Você pode fazer check-in de um environment.yml
arquivo para seu repositório que define a configuração para um ambiente Anaconda.
- script: conda env create --quiet --file environment.yml
displayName: Create Anaconda environment
Nota
Se você 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 --force
argumento: conda env create --quiet --force --file environment.yml
.
Nota
Se você estiver usando agentes auto-hospedados que estão compartilhando armazenamento e executando trabalhos em paralelo usando os mesmos ambientes Anaconda, pode haver conflitos entre esses ambientes.
Para resolver, use o --name
argumento e um identificador exclusivo como o valor do argumento, como uma concatenação com a $(Build.BuildNumber)
variável build.
Instalar pacotes do Anaconda
O YAML a seguir instala o scipy
pacote no ambiente conda chamado myEnvironment
.
- bash: |
source activate myEnvironment
conda install --yes --quiet --name myEnvironment scipy
displayName: Install Anaconda packages
Executar etapas de pipeline em um ambiente Anaconda
Nota
Cada etapa de construção é executada em seu próprio processo.
Quando você ativa um ambiente Anaconda, ele edita PATH
e faz outras alterações em seu processo atual.
Portanto, um ambiente Anaconda deve ser ativado 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()
FAQs
Por que estou recebendo um erro "Permissão negada"?
No macOS hospedado, o usuário agente não tem a propriedade do diretório onde o Miniconda está instalado. Para uma correção, consulte a guia "macOS hospedado" em Adicionar conda ao caminho do sistema.
Por que minha compilação para de responder em uma conda create
ou conda install
etapa?
Se você esquecer de passar --yes
, conda vai parar e esperar pela interação do usuário.
Por que meu script no Windows está parando depois que ele ativa o ambiente?
No Windows, activate
é um script em lote. Você deve usar o comando para continuar a executar o script após a call
ativação.
Veja exemplos de uso call
em um pipeline.