Python işlem hatlarını özelleştirme
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. Python ile ilk işlem hattınızı oluşturmak için bkz . Python hızlı başlangıcı.
Azure Pipelines'da Microsoft tarafından barındırılan aracılarla kendi altyapınızı ayarlamak zorunda kalmadan Python uygulamalarınızı 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ü şirket içinde barındırılan bir aracıya ihtiyacınız vardır. Aracınıza Python yüklemek için bkz . UsePythonVersion.
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örevini azure-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 görevi değişkene başvuracak şekilde matrix
ayarlayınUsePythonVersion
. Ö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 PythonScript
parametreleştirmek için, bağımsız değişkenleri çalışan işleme geçirmek için görevi değerleriyle arguments
birlikte kullanın. Bağımsız değişkenleri ayrıştırmak için veya daha karmaşık argparse
bir kitaplık kullanabilirsinizsys.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
Bağımlılıkları yükleme
ile belirli PyPI paketlerini pip
yüklemek için betikleri kullanabilirsiniz. Aşağıdaki örnek, ve setuptools
wheel
paketlerini yükler veya yükselterpip
.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Yükleme gereksinimleri
Güncelleştirdikten ve arkadaşlarınızı güncelleştirdikten pip
sonra, bir sonraki adım requirements.txt 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, lint testlerini çalıştırmak için bunu yükler veya yükselter flake8
ve 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 testleri yükler pytest
ve pytest-cov
çalıştırır, test sonuçlarını JUnit biçiminde ve kod kapsamı sonuçlarını Cobertura XML biçiminde çı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 işleri ç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
ile twine
kimlik doğrulaması yapmak için, kimlik doğrulama kimlik bilgilerini ortam değişkeninde PYPIRC_PATH
depolamak için Python twine karşıya yükleme kimlik doğrulama görevini kullanın.
- task: TwineAuthenticate@0
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Ardından, paketlerinizi yayımlamak için kullanan twine
özel bir betik 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.