Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du anpassar skapande, testning, paketering och leverans av Python-appar och -kod i Azure Pipelines. Information om hur du skapar din första pipeline med Python finns i Python-snabbstarten.
Med Microsoft-värdbaserade agenter i Azure Pipelines kan du skapa Python-appar utan att konfigurera din egen infrastruktur. Verktyg som du ofta använder för att skapa, testa och köra Python-appar, inklusive pip, är förinstallerade.
Du kan behöva begära kostnadsfri beviljande av parallella jobb eller köpa ett parallellt jobb för att köra dina pipelines.
Om du vill skapa Python-appar med Azure Pipelines behöver du en lokalt installerad agent med Python installerat. Information om hur du installerar Python på din agent finns i UsePythonVersion.
Använda en specifik Python-version
Om du vill använda en specifik version av Python i din pipeline lägger du till uppgiften Använd Python-version i azure-pipelines.yml. I följande exempel anger YAML-pipelinedefinitionen att pipelinen ska använda Python 3.11.
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
Använda flera Python-versioner
Om du vill köra en pipeline med flera Python-versioner, till exempel för att testa ett paket mot dessa versioner, definierar du en job med en matrix av Python-versioner. Ställ sedan in UsePythonVersion-uppgiften för att referera till matrix-variabeln. Till exempel:
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)'
Du kan lägga till uppgifter som använder varje Python-version i matrisen.
Kör Python-skript
Om du vill köra Python-skript från lagringsplatsen använder du ett script element och anger ett filnamn. Till exempel:
- script: python src/example.py
Du kan också använda Python-skriptaktiviteten för att köra infogade Python-skript.
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Om du vill parametrisera skriptkörning använder du PythonScript uppgiften med arguments värden för att skicka argument till den process som körs. Du kan använda sys.argv eller det mer avancerade argparse biblioteket för att parsa argumenten.
- 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
Installera beroenden
Du kan använda skript för att installera specifika PyPI-paket med pip. I följande exempel installeras eller uppgraderas pip och paketen setuptools och wheel .
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Installationskrav
När du har uppdaterat pip och relaterade filer är ett vanligt nästa steg att installera beroenden från requirements.txt.
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Köra tester
Du kan använda skript för att installera och köra olika tester i pipelinen.
Kör linttester med flake8
Följande YAML-kod installerar eller uppgraderar flake8 och använder den för att köra linttester.
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
Testa med pytest och samla in täckningsmått med pytest-cov
Följande YAML-kod installerar pytest och pytest-cov, kör tester och skriver testresultat i JUnit-format samt kodtäckningsresultat i Cobertura XML-format.
- script: |
pip install pytest pytest-azurepipelines
pip install pytest-cov
pytest --doctest-modules --junitxml=junit/test-results.xml --cov=. --cov-report=xml
displayName: 'pytest'
Köra tester med Tox
Azure Pipelines kan köra parallella Tox-testjobb för att dela upp arbetet. På en utvecklingsdator måste du köra testmiljöerna i serie. I följande exempel används tox -e py för att köra den version av Python som är aktiv för det aktuella jobbet.
- 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'
Publicera testresultat
Lägg till uppgiften Publicera testresultat för att publicera JUnit- eller xUnit-testresultat på servern.
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
Publicera resultat för kodtäckning
Lägg till uppgiften Publicera kodtäckningsresultat för att publicera kodtäckningsresultaten till servern. Du kan se täckningsmått i byggsammanfattningen och ladda ned HTML-rapporter för ytterligare analys.
- task: PublishCodeCoverageResults@2
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Paketera och leverera kod
Autentisera med twine genom att använda Python Twine-upload autentiseringsuppgift för att lagra autentiseringsuppgifter i PYPIRC_PATH-miljövariabeln.
- task: TwineAuthenticate@1
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Lägg sedan till ett anpassat skript som använder twine för att publicera dina paket.
- script: |
twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>
Du kan också använda Azure Pipelines för att skapa en avbildning för din Python-app och skicka den till ett containerregister.