Dostosowywanie języka Python dla usługi Azure Pipelines
Usługa Azure Pipelines umożliwia tworzenie aplikacji w języku Python bez konieczności konfigurowania własnej infrastruktury. Narzędzia, których często używasz do kompilowania, testowania i uruchamiania aplikacji języka Python — takich jak pip — pobierz wstępnie zainstalowanych agentów hostowanych przez firmę Microsoft w usłudze Azure Pipelines.
Aby utworzyć pierwszy potok przy użyciu języka Python, zobacz przewodnik Szybki start języka Python.
Korzystanie z określonej wersji języka Python
Aby użyć określonej wersji języka Python w potoku, dodaj zadanie Używanie wersji języka Python do pliku azure-pipelines.yml. Ten fragment kodu 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ć potok z wieloma wersjami języka Python, na przykład w celu przetestowania pakietu względem tych wersji, zdefiniuj job
element z wersją matrix
języka Python. Następnie ustaw UsePythonVersion
zadanie, aby odwoływać się do zmiennej matrix
.
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)'
Zadania podrzędne można dodawać do uruchamiania przy użyciu każdej wersji języka Python w macierzy.
Uruchamianie skryptów języka Python
Aby uruchomić skrypty języka Python w repozytorium, użyj script
elementu i określ nazwę pliku. Na przykład:
- script: python src/example.py
Możesz również uruchamiać wbudowane skrypty języka Python za pomocą zadania Skrypt 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 procesu wykonywania. Możesz użyć sys.argv
lub bardziej wyrafinowanej argparse
biblioteki, aby przeanalizować argumenty.
- 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
Za pomocą skryptów można zainstalować określone pakiety PyPI za pomocą polecenia pip
. Na przykład ten kod YAML instaluje lub uaktualnia pip
oraz setuptools
pakiety i wheel
.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Wymagania dotyczące instalacji
Po zaktualizowaniu pip
i przyjaciołom typowym następnym krokiem jest zainstalowanie zależności z requirements.txt:
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Uruchom testy
Użyj skryptów, aby zainstalować i uruchomić różne testy w potoku.
Uruchamianie testów lint za pomocą flake8
Aby zainstalować lub uaktualnić flake8
i użyć go do uruchamiania testów lint, użyj następującego kodu YAML:
- 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
Użyj tego kodu YAML, aby zainstalować pytest
i pytest-cov
, uruchomić testy, wyniki testu wyjściowego w formacie JUnit i wynikowe pokrycie kodu w formacie XML Cobertura:
- 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ć równoległe zadania testowe tox, aby podzielić pracę. Na komputerze deweloperów musisz uruchamiać środowiska testowe w serii. W tym przykładzie użyto tox -e py
do uruchamiania niezależnie od wersji 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 testu 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 Publikuj wyniki pokrycia kodu , aby opublikować wyniki pokrycia kodu na serwerze. Metryki pokrycia można wyświetlić w podsumowaniu kompilacji i pobrać raporty HTML w celu dalszej analizy.
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Pakowanie i dostarczanie kodu
Aby uwierzytelnić się twine
w usłudze , użyj zadania Twine Authentication do przechowywania poświadczeń uwierzytelniania w zmiennej środowiskowej PYPIRC_PATH
.
- task: TwineAuthenticate@0
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Następnie dodaj skrypt niestandardowy, który używa twine
do publikowania 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 języka Python i wypchnąć go do rejestru kontenerów.
Powiązane rozszerzenia
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla