Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób dostosowywania tworzenia, testowania, pakowania i dostarczania aplikacji i kodu języka Python w usłudze Azure Pipelines. Aby utworzyć pierwszy potok w języku Python, zobacz przewodnik szybki start dla Python.
Za pomocą agentów hostowanych przez firmę Microsoft w usłudze Azure Pipelines można tworzyć aplikacje języka Python bez konfigurowania własnej infrastruktury. Narzędzia, których często używasz do kompilowania, testowania i uruchamiania aplikacji języka Python, w tym pip, są wstępnie zainstalowane.
Może być konieczne zażądanie bezpłatnego udzielenia zadań równoległych lub zakup zadania równoległego w celu uruchomienia potoków.
Aby tworzyć aplikacje języka Python przy użyciu usługi Azure Pipelines, potrzebny jest własny agent z zainstalowanym językiem Python. Aby zainstalować język Python na agencie, zobacz UsePythonVersion.
Korzystanie z określonej wersji języka Python
Aby użyć określonej wersji języka Python w potoku, dodaj zadanie Użyj wersji języka Python do azure-pipelines.yml. W poniższym przykładzie definicja potoku YAML ustawia potok do używania języka Python 3.11.
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
Korzystanie z wielu wersji języka Python
Aby uruchomić pipeline z wieloma wersjami języka Python, na przykład w celu przetestowania pakietu względem tych wersji, zdefiniuj job element z matrix wersjami języka Python. Następnie ustaw zadanie UsePythonVersion do odwoływania się do zmiennej matrix. Na przykład:
jobs:
- job: 'Test'
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
inputs:
versionSpec: '$(python.version)'
Zadania korzystające z każdej wersji języka Python można dodawać w macierzy.
Uruchamianie skryptów języka Python
Aby uruchomić skrypty języka Python z repozytorium, użyj script elementu i określ nazwę pliku. Na przykład:
- script: python src/example.py
Możesz również użyć zadania skryptu języka Python do uruchamiania wbudowanych skryptów języka Python.
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Aby sparametryzować wykonywanie skryptu, użyj PythonScript zadania z wartościami arguments , aby przekazać argumenty do uruchomionego procesu. Aby przeanalizować argumenty, można użyć sys.argv lub bardziej zaawansowanej argparse biblioteki.
- 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
Instalowanie zależności
Skrypty umożliwiają zainstalowanie określonych pakietów PyPI za pomocą polecenia pip. Poniższy przykład instaluje lub uaktualnia pakiet pip oraz pakiety setuptools i wheel.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Wymagania dotyczące instalacji
Po zaktualizowaniu pip i powiązanych obiektów, typowym kolejnym krokiem jest zainstalowanie zależności z pliku requirements.txt.
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Uruchom testy
Możesz używać skryptów do instalowania i uruchamiania różnych testów w swoich ciągach zadań.
Uruchamianie sprawdzianów zgodności za pomocą flake8
Poniższy kod YAML instaluje lub uaktualnia flake8 i używa go do wykonywania testów lint.
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
Testowanie za pomocą narzędzia pytest i zbieranie metryk pokrycia za pomocą narzędzia pytest-cov
Poniższy kod YAML instaluje pytest i pytest-cov, uruchamia testy, wyprowadzając wyniki testu w formacie JUnit i wyświetlając wyniki pokrycia kodu w formacie 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'
Uruchamianie testów za pomocą narzędzia Tox
Usługa Azure Pipelines może uruchamiać zadania testowe Tox równolegle, aby podzielić pracę. Na komputerze programistycznym należy uruchomić środowiska testowe w serii. W poniższym przykładzie użyto tox -e py polecenia , aby uruchomić dowolną wersję języka Python, która jest aktywna dla bieżącego zadania.
- 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'
Publikowanie wyników testu
Dodaj zadanie Publikuj wyniki testu, aby opublikować wyniki testów JUnit lub xUnit na serwerze.
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
Publikowanie wyników pokrycia kodu
Dodaj zadanie Publikowanie wyników pokrycia kodu, aby przesłać wyniki pokrycia kodu na serwer. Metryki pokrycia można wyświetlić w podsumowaniu kompilacji i pobrać raporty HTML w celu dalszej analizy.
- task: PublishCodeCoverageResults@2
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Pakowanie i dostarczanie kodu
twine Uwierzytelnij się, używając zadania Python twine upload authenticate, aby przechowywać poświadczenia uwierzytelniania w zmiennej środowiskowej PYPIRC_PATH.
- task: TwineAuthenticate@1
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Następnie dodaj niestandardowy skrypt, który używa twine do publikowania twoich pakietów.
- script: |
twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>
Za pomocą usługi Azure Pipelines można również utworzyć obraz dla aplikacji w języku Python i wypchnąć go do rejestru kontenerów.