Přizpůsobení Pythonu pro Azure Pipelines

Azure Pipelines můžete použít k vytváření aplikací v Pythonu, aniž byste museli nastavovat vlastní infrastrukturu. Nástroje, které běžně používáte k sestavování, testování a spouštění aplikací v Pythonu , jako je pip, se předinstalují na agentech hostovaných Microsoftem v Azure Pipelines.

Pokud chcete vytvořit svůj první kanál pomocí Pythonu, projděte si rychlý start pro Python.

Použití konkrétní verze Pythonu

Pokud chcete ve svém kanálu použít konkrétní verzi Pythonu, přidejte do souboru azure-pipelines.ymlúlohu Použít verzi Pythonu. Tento fragment kódu nastaví kanál tak, aby používal Python 3.11:

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.11'

Použití více verzí Pythonu

Pokud chcete spustit kanál s více verzemi Pythonu, například otestovat balíček s těmito verzemi, definujte job s a matrix z verzí Pythonu. Pak nastavte UsePythonVersion úlohu tak, aby odkazovat na proměnnou matrix .

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)'

Pomocí každé verze Pythonu v matici můžete přidat úlohy, které se mají spustit.

Spouštění skriptů Pythonu

Pokud chcete v úložišti spouštět skripty Pythonu script , použijte element a zadejte název souboru. Příklad:

- script: python src/example.py

Vložené skripty Pythonu můžete také spouštět pomocí úlohy Python Script:

- task: PythonScript@0
  inputs:
    scriptSource: 'inline'
    script: |
      print('Hello world 1')
      print('Hello world 2')

Chcete-li parametrizovat provádění skriptu, použijte PythonScript úlohu s arguments hodnotami k předání argumentů do prováděcího procesu. K parsování argumentů můžete použít sys.argv nebo propracovanější argparse knihovnu.

- 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

Instalace závislostí

Pomocí skriptů můžete nainstalovat konkrétní balíčky PyPI pomocí pipnástroje . Tento YAML například nainstaluje nebo upgraduje pip a setuptools balíčky a wheel .

- script: python -m pip install --upgrade pip setuptools wheel
  displayName: 'Install tools'

Požadavky na instalaci

Po aktualizaci pip a přátel je typickým dalším krokem instalace závislostí z requirements.txt:

- script: pip install -r requirements.txt
  displayName: 'Install requirements'

Spouštění testů

Pomocí skriptů můžete v kanálu instalovat a spouštět různé testy.

Spouštění testů lint pomocí flake8

Pokud chcete nainstalovat nebo upgradovat flake8 a použít ho ke spouštění testů lint, použijte tento YAML:

- script: |
    python -m pip install flake8
    flake8 .
  displayName: 'Run lint tests'

Testování pomocí pytestu a shromažďování metrik pokrytí pomocí pytest-cov

Tento YAML slouží k instalaci pytest a pytest-cov, spouštění testů, výstupních výsledků testů ve formátu JUnit a pokrytí výstupního kódu ve formátu Cobertura XML:

- script: |
    pip install pytest pytest-azurepipelines
    pip install pytest-cov
    pytest --doctest-modules --junitxml=junit/test-results.xml --cov=. --cov-report=xml
  displayName: 'pytest'

Spouštění testů pomocí Tox

Azure Pipelines může spouštět paralelní testovací úlohy Tox a rozdělovat práci. Na vývojovém počítači musíte testovací prostředí spouštět v řadě. Tato ukázka používá tox -e py ke spuštění jakékoli verze Pythonu, která je aktivní pro aktuální úlohu.

- 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'

Publikování výsledků testů

Přidejte úlohu Publish Test Results (Publikovat výsledky testu ), která publikuje výsledky testů JUnit nebo xUnit na server:

- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testResultsFiles: '**/test-*.xml'
    testRunTitle: 'Publish test results for Python $(python.version)'

Publikování výsledků pokrytí kódu

Přidejte úlohu Publikovat výsledky pokrytí kódu , která publikuje výsledky pokrytí kódu na server. Metriky pokrytí si můžete prohlédnout v souhrnu sestavení a stáhnout si sestavy HTML pro další analýzu.

- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'

Zabalení a doručení kódu

Pokud se chcete ověřit pomocí twinepříkazu , použijte úlohu Ověřování twine k uložení přihlašovacích údajů pro ověřování do PYPIRC_PATH proměnné prostředí.

- task: TwineAuthenticate@0
  inputs:
    artifactFeed: '<Azure Artifacts feed name>'
    pythonUploadServiceConnection: '<twine service connection from external organization>'

Pak přidejte vlastní skript , který používá twine k publikování balíčků.

- script: |
   twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>

Azure Pipelines můžete také použít k sestavení image pro aplikaci v Pythonu a jejímu nasdílení do registru kontejneru.