Azure Pipelines için Python'i özelleştirme
Kendi altyapınızı ayarlamak zorunda kalmadan Python uygulamalarınızı oluşturmak için Azure Pipelines'ı kullanabilirsiniz. Pip gibi Python uygulamalarını derlemek, test etmek ve çalıştırmak için yaygın olarak kullandığınız araçlar, Azure Pipelines'da Microsoft tarafından barındırılan aracılara önceden yüklenir.
Python ile ilk işlem hattınızı oluşturmak için bkz. Python hızlı başlangıcı.
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'ye ekleyin. Bu kod parçacığı 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ümlerde test etmek için python sürümlerini içeren bir job
matrix
tanımlayın. Ardından, görevi değişkenine başvuracak matrix
şekilde ayarlayınUsePythonVersion
.
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)'
Matristeki her Python sürümünü kullanarak çalıştırılacak görevler ekleyebilirsiniz.
Python betiklerini çalıştırma
Deponuzda Python betiklerini çalıştırmak için bir script
öğe kullanın ve bir dosya adı belirtin. Örneğin:
- script: python src/example.py
Ayrıca, Python Betiği göreviyle satır içi Python betikleri de çalıştırabilirsiniz:
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Betik yürütmesini parametreleştirmek için, yürütme işlemine PythonScript
bağımsız değişkenleri 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 gelişmiş argparse
kitaplığı 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 pip
belirli PyPI paketlerini yüklemek için betikleri kullanabilirsiniz. Örneğin, bu YAML ile 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, tipik bir sonraki adım requirements.txtbağımlılıkları yüklemektir:
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Testleri çalıştırma
İşlem hattınızda çeşitli testler yüklemek ve çalıştırmak için betikleri kullanın.
Flake8 ile lint testleri çalıştırma
Lint testlerini çalıştırmak üzere yüklemek veya yükseltmek flake8
ve kullanmak için şu YAML'yi kullanın:
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
pytest ile test etme ve pytest-cov ile kapsam ölçümlerini toplama
Ve pytest-cov
yüklemek, testleri çalıştırmak, JUnit biçiminde çıkış testi sonuçları ve Cobertura XML biçiminde çıkış kodu kapsamı sonuçlarını yüklemek pytest
için bu YAML'yi kullanın:
- 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. Bu ö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@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Paketle ve kodu teslim et
ile twine
kimlik doğrulaması yapmak için, kimlik doğrulama kimlik bilgilerini ortam değişkeninde PYPIRC_PATH
depolamak için Twine Kimlik Doğrulaması 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.
İlgili uzantılar
- PyCharm için Azure DevOps eklentisi (IntelliJ) (Microsoft)
- Visual Studio Code'de Python (Microsoft)
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin