Bagikan melalui


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.