Menyesuaikan alur Python
Artikel ini menjelaskan cara menyesuaikan pembuatan, pengujian, pengemasan, dan pengiriman aplikasi dan kode Python di Azure Pipelines. Untuk membuat alur pertama Anda dengan Python, lihat mulai cepat Python.
Dengan agen yang dihosting Microsoft di Azure Pipelines, Anda dapat membangun aplikasi Python tanpa harus menyiapkan infrastruktur Anda sendiri. Alat yang biasanya Anda gunakan untuk membangun, menguji, dan menjalankan aplikasi Python, termasuk pip
, telah diinstal sebelumnya.
Anda mungkin perlu meminta pemberian gratis pekerjaan paralel atau membeli pekerjaan paralel untuk menjalankan alur Anda.
Untuk membangun aplikasi Python dengan Azure Pipelines, Anda memerlukan agen yang dihost sendiri dengan Python yang diinstal. Untuk menginstal Python di agen Anda, lihat UsePythonVersion.
Menggunakan versi Python tertentu
Untuk menggunakan versi Python tertentu di alur Anda, tambahkan tugas Gunakan versi Python ke azure-pipelines.yml. Contoh definisi alur YAML berikut mengatur alur untuk menggunakan Python 3.11.
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
Menggunakan beberapa versi Python
Untuk menjalankan alur dengan beberapa versi Python, misalnya untuk menguji paket terhadap versi tersebut, tentukan job
dengan matrix
versi Python. Kemudian atur UsePythonVersion
tugas untuk mereferensikan matrix
variabel. Contohnya:
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)'
Anda dapat menambahkan tugas yang menggunakan setiap versi Python dalam matriks.
Jalankan skrip Python
Untuk menjalankan skrip Python dari repositori Anda, gunakan script
elemen dan tentukan nama file. Contohnya:
- script: python src/example.py
Anda juga dapat menggunakan tugas skrip Python untuk menjalankan skrip Python sebaris.
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Untuk membuat parameter eksekusi skrip, gunakan PythonScript
tugas dengan arguments
nilai untuk meneruskan argumen ke dalam proses yang sedang berjalan. Anda dapat menggunakan sys.argv
atau pustaka yang lebih canggih argparse
untuk mengurai argumen.
- 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
Instal dependensi
Anda dapat menggunakan skrip untuk menginstal paket PyPI tertentu dengan pip
. Contoh berikut menginstal atau meningkatkan pip
dan setuptools
paket dan wheel
.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Persyaratan penginstalan
Setelah Anda memperbarui pip
dan teman, langkah selanjutnya yang khas adalah menginstal dependensi dari requirements.txt.
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Jalankan pengujian
Anda dapat menggunakan skrip untuk menginstal dan menjalankan berbagai pengujian di alur Anda.
Jalankan pengujian lint dengan flake8
Kode YAML berikut menginstal atau meningkatkan flake8
dan menggunakannya untuk menjalankan pengujian lint.
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
Uji dengan pytest dan kumpulkan metrik cakupan dengan pytest-cov
Kode YAML berikut menginstal pytest
dan pytest-cov
dan menjalankan pengujian, menghasilkan hasil pengujian dalam format JUnit dan menghasilkan cakupan kode menghasilkan format 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'
Menjalankan pengujian dengan Tox
Azure Pipelines dapat menjalankan pekerjaan pengujian Tox paralel untuk membagi pekerjaan. Pada komputer pengembangan, Anda harus menjalankan lingkungan pengujian Anda secara seri. Contoh berikut menggunakan tox -e py
untuk menjalankan versi Python mana pun yang aktif untuk pekerjaan saat ini.
- 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'
Menerbitkan hasil pengujian
Tambahkan tugas Terbitkan Hasil Pengujian untuk menerbitkan hasil pengujian JUnit atau xUnit ke server.
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
Menerbitkan hasil cakupan kode
Tambahkan tugas Terbitkan hasil cakupan kode untuk menerbitkan hasil cakupan kode ke server. Anda dapat melihat metrik cakupan dalam ringkasan build, dan mengunduh laporan HTML untuk analisis lebih lanjut.
- task: PublishCodeCoverageResults@2
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Mengemas dan mengirimkan kode
Untuk mengautentikasi dengan twine
, gunakan tugas autentikasi unggahan kembar Python untuk menyimpan kredensial autentikasi dalam PYPIRC_PATH
variabel lingkungan.
- task: TwineAuthenticate@0
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Kemudian tambahkan skrip kustom yang menggunakan twine
untuk menerbitkan paket Anda.
- script: |
twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>
Anda juga dapat menggunakan Azure Pipelines untuk membuat gambar untuk aplikasi Python Anda dan mendorongnya ke registri kontainer.
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk