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.

  1. Entre na sua organização do Azure DevOps e navegue até seu projeto.

  2. Em seu projeto, navegue até a página Pipelines. Em seguida, escolha a ação para criar um novo pipeline.

  3. Percorra as etapas do assistente selecionando primeiro GitHub como o local do código-fonte.

  4. Você pode ser redirecionado para o GitHub para então entrar. Nesse caso, insira suas credenciais do GitHub.

  5. Quando a lista de repositórios for exibida, selecione o repositório de exemplo do Anaconda.

  6. O Azure Pipelines analisará o código no seu repositório e detectará um arquivo azure-pipelines.yml existente.

  7. Selecione Executar.

  8. 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.

Como posso realizar meus testes com várias versões do Python?

Confira Compilar aplicativos Python no Azure Pipelines.