Mengkustomisasi Python untuk Azure Pipelines
Anda dapat menggunakan Azure Pipelines untuk membangun aplikasi Python tanpa harus menyiapkan infrastruktur Anda sendiri. Alat yang biasanya Anda gunakan untuk membangun, menguji, dan menjalankan aplikasi Python - seperti pip - dapatkan pra-instal pada agen yang dihosting Microsoft di Azure Pipelines.
Untuk membuat alur pertama Anda dengan Python, lihat mulai cepat Python.
Menggunakan versi Python tertentu
Untuk menggunakan versi Python tertentu di alur Anda, tambahkan tugas Gunakan Versi Python ke azure-pipelines.yml. Cuplikan ini 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.
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)'
Anda dapat menambahkan tugas untuk dijalankan menggunakan setiap versi Python dalam matriks.
Jalankan skrip Python
Untuk menjalankan skrip Python di repositori Anda, gunakan script
elemen dan tentukan nama file. Contohnya:
- script: python src/example.py
Anda juga dapat menjalankan skrip Python sebaris dengan tugas Skrip Python:
- 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 eksekusi. 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
. Misalnya, YAML ini 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-teman, langkah selanjutnya yang khas adalah menginstal dependensi dari requirements.txt:
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Jalankan pengujian
Gunakan skrip untuk menginstal dan menjalankan berbagai pengujian di alur Anda.
Jalankan tes lint dengan flake8
Untuk menginstal atau meningkatkan flake8
dan menggunakannya untuk menjalankan pengujian lint, gunakan YAML ini:
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
Uji dengan pytest dan kumpulkan metrik cakupan dengan pytest-cov
Gunakan YAML ini untuk menginstal pytest
dan pytest-cov
, menjalankan pengujian, hasil pengujian output dalam format JUnit, dan cakupan kode output 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 memisahkan pekerjaan. Pada komputer pengembangan, Anda harus menjalankan lingkungan pengujian anda secara seri. Sampel ini 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'
Memublikasikan 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@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Mengemas dan mengirimkan kode
Untuk mengautentikasi dengan twine
, gunakan tugas Autentikasi Kembar 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 membangun gambar untuk aplikasi Python Anda dan mendorongnya ke registri kontainer.
Ekstensi terkait
- Plugin Azure DevOps untuk PyCharm (IntelliJ) (Microsoft)
- Python di Visual Studio Code (Microsoft)
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