Executar pipelines com ambientes do Anaconda
Azure DevOps Services
Saiba como configurar e utilizar o Anaconda com o Python no seu pipeline. O Anaconda é uma distribuição python para ciência de dados e machine learning.
Introdução
Siga estas instruções para configurar um pipeline para uma aplicação Python de exemplo com o ambiente do Anaconda.
Inicie sessão na sua organização do Azure DevOps e navegue para o seu projeto.
No seu projeto, navegue para a página Pipelines . Em seguida, escolha a ação para criar um novo pipeline.
Veja os passos do assistente ao selecionar primeiro o GitHub como a localização do código fonte.
Poderá ser redirecionado para o GitHub para iniciar sessão. Em caso afirmativo, introduza as suas credenciais do GitHub.
Quando for apresentada a lista de repositórios, selecione o repositório de exemplo do Anaconda.
Os Pipelines do Azure irão analisar o código no seu repositório e detetar um ficheiro existente
azure-pipelines.yml
.Selecione Executar.
É iniciada uma nova execução. Aguarde a conclusão da execução.
Dica
Para fazer alterações ao ficheiro YAML conforme descrito neste tópico, selecione o pipeline na página Pipelines e, em seguida, Edite o azure-pipelines.yml
ficheiro.
Adicionar conda ao caminho do sistema
Nos agentes alojados, a Conda fica de PATH
fora por predefinição para impedir que a versão do Python entre em conflito com outras versões instaladas. O task.prependpath
comando do agente irá disponibilizá-lo para todos os passos subsequentes.
- bash: echo "##vso[task.prependpath]$CONDA/bin"
displayName: Add conda to PATH
Criar um ambiente
A partir de argumentos de linha de comandos
O conda create
comando irá criar um ambiente com os argumentos que transmitir.
- bash: conda create --yes --quiet --name myEnvironment
displayName: Create Anaconda environment
A partir do YAML
Pode dar entrada de um environment.yml
ficheiro no seu repositório que define a configuração de um ambiente do Anaconda.
- script: conda env create --quiet --file environment.yml
displayName: Create Anaconda environment
Nota
Se estiver a utilizar um agente autoalojado e não remover o ambiente no final, receberá um erro na compilação seguinte, uma vez que o ambiente já existe. Para resolver, utilize o --force
argumento: conda env create --quiet --force --file environment.yml
.
Nota
Se estiver a utilizar agentes autoalojados que estão a partilhar o armazenamento e a executar tarefas em paralelo com os mesmos ambientes do Anaconda, poderão existir conflitos entre esses ambientes.
Para resolver, utilize o --name
argumento e um identificador exclusivo como o valor do argumento, como uma concatenação com a $(Build.BuildNumber)
variável de compilação.
Instalar pacotes a partir do Anaconda
O YAML seguinte instala o scipy
pacote no ambiente conda denominado myEnvironment
.
- bash: |
source activate myEnvironment
conda install --yes --quiet --name myEnvironment scipy
displayName: Install Anaconda packages
Executar passos de pipeline num ambiente do Anaconda
Nota
Cada passo de compilação é executado no seu próprio processo.
Quando ativa um ambiente do Anaconda, este será editado e efetuará PATH
outras alterações ao processo atual.
Por conseguinte, um ambiente do Anaconda tem de ser ativado separadamente para cada passo.
- 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 motivo estou a receber um erro "Permissão negada"?
No macOS alojado, o utilizador do agente não tem a propriedade do diretório onde a Miniconda está instalada. Para obter uma correção, consulte o separador "MacOS alojado" em Adicionar conda ao caminho do sistema.
Porque é que a minha compilação deixa de responder num conda create
ou conda install
passo?
Se se esquecer de passar --yes
, o Conda irá parar e aguardar pela interação do utilizador.
Porque é que o meu script no Windows está a parar depois de ativar o ambiente?
No Windows, activate
encontra-se um script do Batch. Tem de utilizar o comando para retomar a execução do call
script após a ativação.
Veja exemplos de utilização call
num pipeline.
Como posso executar os meus testes com várias versões do Python?
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários