Azure Pipelines용 Python 사용자 지정
Azure Pipelines를 사용하여 자체 인프라를 설정하지 않고도 Python 앱을 빌드할 수 있습니다. pip와 같은 Python 앱을 빌드, 테스트 및 실행하는 데 일반적으로 사용하는 도구는 Azure Pipelines의 Microsoft 호스팅 에이전트 에 미리 설치됩니다.
Python을 사용하여 첫 번째 파이프라인을 만들려면 Python 빠른 시작을 참조하세요.
특정 Python 버전 사용
파이프라인에서 특정 버전의 Python을 사용하려면 Python 버전 사용 태스크 를 azure-pipelines.yml에 추가합니다. 이 코드 조각은 Python 3.11을 사용하도록 파이프라인을 설정합니다.
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
여러 Python 버전 사용
여러 Python 버전으로 파이프라인을 실행하려면(예: 해당 버전에 대해 패키지를 테스트하려면) Python 버전의 를 사용하여 을 matrix
정의 job
합니다. 그런 다음, 변수를 UsePythonVersion
참조 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)'
행렬의 각 Python 버전을 사용하여 실행할 작업을 추가할 수 있습니다.
Python 스크립트 실행
리포지토리에서 Python 스크립트를 실행하려면 요소를 사용하고 script
파일 이름을 지정합니다. 예를 들면 다음과 같습니다.
- script: python src/example.py
Python 스크립트 작업을 사용하여 인라인 Python 스크립트를 실행할 수도 있습니다.
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
스크립트 실행을 매개 변수화하려면 값을 가진 arguments
태스크를 PythonScript
사용하여 실행 프로세스에 인수를 전달합니다. 또는 보다 정교한 argparse
라이브러리를 사용하여 sys.argv
인수를 구문 분석할 수 있습니다.
- 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
종속성 설치
스크립트를 사용하여 와 함께 pip
특정 PyPI 패키지를 설치할 수 있습니다. 예를 들어 이 YAML은 및 패키지를 설치하거나 업그레이드 pip
setuptools
wheel
합니다.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
설치 요구 사항
및 친구를 업데이트 pip
한 후 일반적인 다음 단계는 requirements.txt종속성을 설치하는 것입니다.
- script: pip install -r requirements.txt
displayName: 'Install requirements'
테스트 실행
스크립트를 사용하여 파이프라인에서 다양한 테스트를 설치하고 실행합니다.
flake8을 사용하여 보풀 테스트 실행
lint 테스트를 설치하거나 업그레이드 flake8
하고 사용하여 Lint 테스트를 실행하려면 다음 YAML을 사용합니다.
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
pytest를 사용하여 테스트하고 pytest-cov를 사용하여 검사 메트릭 수집
이 YAML을 사용하여 및 를 설치 pytest
하고 pytest-cov
, 테스트를 실행하고, JUnit 형식으로 테스트 결과를 출력하고, 코드 검사 결과를 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'
Tox를 사용하여 테스트 실행
Azure Pipelines는 병렬 Tox 테스트 작업을 실행하여 작업을 분할할 수 있습니다. 개발 컴퓨터에서 테스트 환경을 연속으로 실행해야 합니다. 이 샘플에서는 를 사용하여 tox -e py
현재 작업에 대해 활성 상태인 Python 버전을 실행합니다.
- 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'
테스트 결과 게시
테스트 결과 게시 태스크를 추가하여 JUnit 또는 xUnit 테스트 결과를 서버에 게시합니다.
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
코드 검사 결과 게시
코드 검사 결과 게시 작업을 추가하여 코드 검사 결과를 서버에 게시합니다. 빌드 요약에서 검사 메트릭을 확인하고 추가 분석을 위해 HTML 보고서를 다운로드할 수 있습니다.
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
코드 패키지 및 배달
를 twine
사용하여 인증하려면 Twine Authenticate 작업을 사용하여 환경 변수에 인증 자격 증명을 PYPIRC_PATH
저장합니다.
- task: TwineAuthenticate@0
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
그런 다음 를 사용하여 twine
패키지를 게시하는 사용자 지정 스크립트를 추가합니다.
- script: |
twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>
Azure Pipelines를 사용하여 Python 앱용 이미지를 빌드 하고 컨테이너 레지스트리에 푸시할 수도 있습니다.
관련 확장
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기