Personalizar o Python para Pipelines do Azure
Pode utilizar o Azure Pipelines para criar as suas aplicações Python sem ter de configurar qualquer infraestrutura própria. As ferramentas que utiliza frequentemente para criar, testar e executar aplicações Python , como o pip, são pré-instaladas em agentes alojados na Microsoft nos Pipelines do Azure.
Para criar o seu primeiro pipeline com Python, veja o início rápido do Python.
Utilizar uma versão específica do Python
Para utilizar uma versão específica do Python no pipeline, adicione a tarefa Utilizar Versão do Python a azure-pipelines.yml. Este fragmento define o pipeline para utilizar o Python 3.11:
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
Utilizar várias versões do Python
Para executar um pipeline com várias versões do Python, por exemplo, para testar um pacote com essas versões, defina um job
com uma matrix
das versões do Python. Em seguida, defina a UsePythonVersion
tarefa para referenciar a matrix
variável.
jobs:
- job: 'Test'
pool:
vmImage: 'ubuntu-latest' # other options: 'macOS-latest', 'windows-latest'
strategy:
matrix:
Python38:
python.version: '3.8'
Python39:
python.version: '3.9'
Python310:
python.version: '3.10'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'
Pode adicionar tarefas a executar com cada versão do Python na matriz.
Executar scripts de Python
Para executar scripts python no seu repositório, utilize um script
elemento e especifique um nome de ficheiro. Por exemplo:
- script: python src/example.py
Também pode executar scripts python inline com a tarefa Script de Python:
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Para parametrizar a execução de scripts, utilize a PythonScript
tarefa com arguments
valores para transmitir argumentos para o processo de execução. Pode utilizar sys.argv
ou a biblioteca mais sofisticada argparse
para analisar os argumentos.
- task: PythonScript@0
inputs:
scriptSource: inline
script: |
import sys
print ('Executing script file is:', str(sys.argv[0]))
print ('The arguments are:', str(sys.argv))
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--world", help="Provide the name of the world to greet.")
args = parser.parse_args()
print ('Hello ', args.world)
arguments: --world Venus
Instalar dependências
Pode utilizar scripts para instalar pacotes PyPI específicos com pip
. Por exemplo, este YAML instala ou atualiza pip
e os setuptools
pacotes e wheel
.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Requisitos de instalação
Depois de atualizar pip
e amigos, um passo seguinte típico é instalar dependências do requirements.txt:
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Executar testes
Utilize scripts para instalar e executar vários testes no pipeline.
Executar testes lint com flake8
Para instalar ou atualizar flake8
e utilizá-lo para executar testes lint, utilize este YAML:
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
Testar com pytest e recolher métricas de cobertura com pytest-cov
Utilize este YAML para instalar pytest
e pytest-cov
, executar testes, resultados de teste de saída no formato JUnit e resultados de cobertura do código de saída no formato Cobertura XML:
- script: |
pip install pytest pytest-azurepipelines
pip install pytest-cov
pytest --doctest-modules --junitxml=junit/test-results.xml --cov=. --cov-report=xml
displayName: 'pytest'
Executar testes com o Tox
O Azure Pipelines pode executar tarefas de teste tox paralelas para dividir o trabalho. Num computador de desenvolvimento, tem de executar os seus ambientes de teste em série. Este exemplo utiliza tox -e py
para executar a versão do Python que estiver ativa para a tarefa atual.
- job:
pool:
vmImage: 'ubuntu-latest'
strategy:
matrix:
Python38:
python.version: '3.8'
Python39:
python.version: '3.9'
Python310:
python.version: '3.10'
steps:
- task: UsePythonVersion@0
displayName: 'Use Python $(python.version)'
inputs:
versionSpec: '$(python.version)'
- script: pip install tox
displayName: 'Install Tox'
- script: tox -e py
displayName: 'Run Tox'
Publicar resultados do teste
Adicione a tarefa Publicar Resultados do Teste para publicar os resultados do teste JUnit ou xUnit no servidor:
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
Publicar resultados de cobertura do código
Adicione a tarefa Publicar Resultados da Cobertura do Código para publicar os resultados de cobertura do código no servidor. Pode ver as métricas de cobertura no resumo da compilação e transferir relatórios HTML para análise adicional.
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Compactar e entregar código
Para autenticar com twine
, utilize a tarefa Autenticar Twine para armazenar credenciais de autenticação na variável de PYPIRC_PATH
ambiente.
- task: TwineAuthenticate@0
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Em seguida, adicione um script personalizado que utilize twine
para publicar os pacotes.
- script: |
twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>
Também pode utilizar o Azure Pipelines para criar uma imagem para a sua aplicação Python e enviá-la para um registo de contentor.
Extensões relacionadas
- Plug-in do Azure DevOps para PyCharm (IntelliJ) (Microsoft)
- Python no Visual Studio Code (Microsoft)
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