Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede Azure Pipelines'da Python uygulamaları ve kodu oluşturma, test etme, paketleme ve teslim etme işlemleri nasıl özelleştirileceği açıklanır. İlk Python işlem hattınızı oluşturmak için bkz: Python hızlı başlangıç kılavuzu.
Azure Pipelines'da Microsoft tarafından barındırılan aracılarla kendi altyapınızı ayarlamadan Python uygulamaları oluşturabilirsiniz. dahil olmak üzere pip
Python uygulamalarını derlemek, test etmek ve çalıştırmak için yaygın olarak kullandığınız araçlar önceden yüklenmiştir.
İşlem hatlarınızı çalıştırmak için paralel işlerin ücretsiz olarak verilmesini istemeniz veya paralel bir iş satın almanız gerekebilir.
Azure Pipelines ile Python uygulamaları oluşturmak için Python yüklü bir kendinize ait aracıya ihtiyacınız vardır. Ajanınıza Python yüklemek için UsePythonVersion bölümüne bakın.
Belirli bir Python sürümünü kullanma
İşlem hattınızda Python'ın belirli bir sürümünü kullanmak için python sürümünü kullan göreviniazure-pipelines.yml ekleyin. Aşağıdaki örnek YAML işlem hattı tanımı, işlem hattını Python 3.11 kullanacak şekilde ayarlar.
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
Birden çok Python sürümü kullanma
Birden çok Python sürümüne sahip bir işlem hattı çalıştırmak için, örneğin bir paketi bu sürümlere göre test etmek için python sürümleriyle bir job
matrix
tanımlayın. Ardından UsePythonVersion
görevini matrix
değişkenine başvuracak şekilde ayarlayın. Örneğin:
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)'
Matristeki her Python sürümünü kullanan görevler ekleyebilirsiniz.
Python betiklerini çalıştırma
Deponuzdan Python betiklerini çalıştırmak için bir script
öğe kullanın ve bir dosya adı belirtin. Örneğin:
- script: python src/example.py
Satır içi Python betiklerini çalıştırmak için Python betik görevini de kullanabilirsiniz.
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Betik yürütmesini parametreleştirmek için PythonScript
görevini, bağımsız değişkenleri çalışan sürece geçirmek üzere arguments
değerleriyle birlikte kullanın.
sys.argv
veya daha gelişmiş argparse
kütüphanesini kullanarak bağımsız değişkenleri ayrıştırabilirsiniz.
- 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
Bağımlılıkları yükleme
Belirli PyPI paketlerini pip
kullanarak yüklemek için komut dosyalarını kullanabilirsiniz. Aşağıdaki örnek, pip
ve setuptools
ile wheel
paketlerini yükler veya yükseltir.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Yükleme gereksinimleri
Güncellemeleri ve ilişkili bileşenleri pip
güncelledikten sonra, tipik olarak atılacak bir sonraki adım, requirements.txt dosyasından bağımlılıkları yüklemektir.
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Testleri çalıştırma
İşlem hattınızda çeşitli testleri yüklemek ve çalıştırmak için betikleri kullanabilirsiniz.
Flake8 ile lint testleri çalıştırma
Aşağıdaki YAML kodu, `flake8
` öğesini yükler veya yükseltir ve bunu lint testlerini çalıştırmak için kullanır.
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
pytest ile test etme ve pytest-cov ile kapsam ölçümlerini toplama
Aşağıdaki YAML kodu pytest
ve pytest-cov
yükler ve testleri çalıştırarak, test sonuçlarını JUnit formatında ve kod kapsamı sonuçlarını Cobertura XML formatında çıkış olarak oluşturur.
- 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 ile test çalıştırma
Azure Pipelines, işi bölmek için paralel Tox test görevlerini çalıştırabilir. Geliştirme bilgisayarında test ortamlarınızı seri olarak çalıştırmanız gerekir. Aşağıdaki örnek, geçerli iş için hangi Python sürümünün etkin olduğunu çalıştırmak için kullanır tox -e py
.
- 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'
Test sonuçlarını yayımlama
JUnit veya xUnit test sonuçlarını sunucuda yayımlamak için Test Sonuçlarını Yayımla görevini ekleyin.
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
Kod kapsamı sonuçlarını yayımlama
Kod kapsamı sonuçlarını sunucuda yayımlamak için Kod kapsamı sonuçlarını yayımla görevini ekleyin. Derleme özetinde kapsam ölçümlerini görebilir ve daha fazla analiz için HTML raporlarını indirebilirsiniz.
- task: PublishCodeCoverageResults@2
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Kod paketleme ve teslim
Ortam değişkeninde kimlik doğrulama bilgilerini depolamak için Python twine yükleme kimlik doğrulama görevini kullanarak twine
ile kimlik doğrulaması yapın.
- task: TwineAuthenticate@1
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Ardından, paketlerinizi yayımlamak için kullanan özel bir twine
ekleyin.
- script: |
twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>
Ayrıca Azure Pipelines'ı kullanarak Python uygulamanız için bir görüntü oluşturabilir ve bunu bir kapsayıcı kayıt defterine gönderebilirsiniz.