Delen via


Een Python-app bouwen en publiceren

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

In deze quickstart maakt u een pijplijn waarmee een Python-app wordt gebouwd en getest. U ziet hoe u Azure Pipelines gebruikt om Python-apps en -scripts te bouwen, testen en implementeren als onderdeel van uw CI/CD-systeem (continue integratie en continue levering).

Vereisten

Python is vooraf geïnstalleerd op door Microsoft gehoste agents voor Linux, macOS en Windows. U hoeft niets meer in te stellen om Python-projecten te bouwen. Als u wilt zien welke Python-versies vooraf zijn geïnstalleerd, raadpleegt u Software.

Product Eisen
Azure DevOps - Een Azure DevOps-project.
- Een vermogen om pijplijnen uit te voeren op agents die door Microsoft worden gehost. U kunt een parallelle taak aanschaffen of u kunt een gratis laag aanvragen.
- Basiskennis van YAML en Azure Pipelines. Zie Uw eerste pijplijn makenvoor meer informatie.
- Toestemmingen:
     - Als u een pijplijn wilt maken: u moet zich in de groep Inzenders bevinden en de groep moet de machtiging Maak een build-pijplijn hebben ingesteld op Toestaan. Leden van de groep Projectbeheerders kunnen pijplijnen beheren.
    - Als u serviceverbindingen wilt maken: u moet de rol Beheerder of Maker hebben voor serviceverbindingen.
GitHub - Een GitHub-account.
- Een GitHub-serviceverbinding om Azure Pipelines te autoriseren.
Product Eisen
Azure DevOps - Een Azure DevOps-project.
- Een zelf-hostende agent waarop Python 3.12 of een andere Python-versie is geïnstalleerd. Om er een te maken, zie Zelfgehoste agents.
- Basiskennis van YAML en Azure Pipelines. Zie Uw eerste pijplijn makenvoor meer informatie.
- Toestemmingen:
    - Als u een pijplijn wilt maken: u moet zich in de groep Inzenders bevinden en de groep moet de machtiging Maak een build-pijplijn hebben ingesteld op Toestaan. Leden van de groep Projectbeheerders kunnen pijplijnen beheren.
    - Als u serviceverbindingen wilt maken: u moet de rol Beheerder of Maker hebben voor serviceverbindingen.
GitHub - Een GitHub-account.
- Een GitHub-serviceverbinding om Azure Pipelines te autoriseren.

Belangrijk

Voor GitHub-procedures moet u mogelijk een of meer van de volgende acties uitvoeren in GitHub:

  • Aanmelden.
  • Azure Pipelines autoriseren.
  • Verifiëren bij GitHub-organisaties.
  • Installeer de Azure Pipelines-app.

Volg de instructies om de vereiste processen te voltooien. Zie Toegang tot GitHub-opslagplaatsen voor meer informatie.

De voorbeeldcode forken

Fork de Python-voorbeeldopslagplaats naar uw GitHub-account.

  1. Ga naar de opslagplaats python-sample-vscode-flask-tutorial .
  2. Selecteer Fork rechtsboven.
  3. Zorg ervoor dat de naam van uw GitHub-account is geselecteerd onder Eigenaar en selecteer Fork maken. De fork heeft standaard dezelfde naam als de oorspronkelijke repository, maar u kunt deze een andere naam geven.

Uw pijplijn maken

  1. Selecteer in uw Azure DevOps-project Pijplijnen in het linkernavigatiemenu en selecteer vervolgens Nieuwe pijplijn of Pijplijn maken als deze pijplijn de eerste is in het project.
  2. Selecteer In het scherm Waar is uw codegitHub als de locatie van uw broncode.
  3. Selecteer op het scherm Een opslagplaats kiezen uw geforkte Python-voorbeeldopslagplaats.
  4. Selecteer Starter-pijplijn in het scherm Uw pijplijn configureren.

Uw pijplijn aanpassen

Vervang op het scherm Pijplijn-YAML controleren de inhoud van het gegenereerde azure-pipelines.yml-bestand door de volgende code. De code voert de volgende acties uit op drie verschillende versies van Python:

  1. Installeert de vereiste Python-versie en -afhankelijkheden.
  2. Pakketten pakken artefacten in een ZIP-archief in.
  3. Hiermee publiceert u het archief in uw pijplijn.
  4. Voert tests uit.
trigger:
- main

pool:
  vmImage: ubuntu-latest

strategy:
  matrix:
    Python310:
      python.version: '3.10'
    Python311:
      python.version: '3.11'
    Python312:
      python.version: '3.12'

steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '$(python.version)'
    displayName: 'Use Python $(python.version)'

  - script: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
    displayName: 'Install dependencies'

  - task: ArchiveFiles@2
    displayName: 'Archive files'
    inputs:
      rootFolderOrFile: $(System.DefaultWorkingDirectory)
      includeRootFolder: false
      archiveType: zip
      archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId)-$(python.version).zip
      replaceExistingArchive: true

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)'
      ArtifactName: 'drop'
      publishLocation: 'Container'

  - script: |
      pip install pytest pytest-azurepipelines
      pytest
    displayName: 'pytest'

Vervang op het scherm Pijplijn-YAML controleren de inhoud van het gegenereerde azure-pipelines.yml-bestand door de volgende code. De code voert de volgende acties uit:

  1. Installeert de vereiste Python-versie en -afhankelijkheden.
  2. Pakketten pakken artefacten in een ZIP-archief in.
  3. Hiermee publiceert u het archief in uw pijplijn.
  4. Voert tests uit.

Pas azure-pipelines.yml aan zodat deze overeenkomt met uw projectconfiguratie.

  • Als u een andere agentgroep hebt, vervangt u de tijdelijke aanduiding voor de pool name door de naam van uw pool of default.
  • Wijzig indien nodig de Python versionSpec in een versie die is geïnstalleerd op uw zelfgehoste agent.
  trigger:
  - main

  pool: 
    name: '<your-pool-name or default>'

  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.12'
    displayName: 'Use Python 3.12'  

  - script: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
    displayName: 'Install dependencies'


  - task: ArchiveFiles@2
    displayName: 'Archive files'
    inputs:
      rootFolderOrFile: $(System.DefaultWorkingDirectory)
      includeRootFolder: false
      archiveType: zip
      archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
      replaceExistingArchive: true

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)'
      ArtifactName: 'drop'
      publishLocation: 'Container'

  - script: |
      pip install pytest pytest-azurepipelines
      pytest
    displayName: 'pytest'

Voer uw pijplijn uit

Selecteer Opslaan en uitvoeren en selecteer Opslaan en opnieuw uitvoeren . U kunt Taak selecteren op het scherm Samenvatting om uw taak in actie te zien.

De taak wordt drie keer uitgevoerd, één keer voor elke opgegeven Python-versie. De drie versies kunnen parallel worden uitgevoerd op verschillende agents.

Schermopname van de voltooide Python-taak met meerdere versies.

Schermopname van één Python-taak voltooid.

Artefacten en testresultaten weergeven

Als u uw buildartefacten wilt weergeven, selecteert u de [N] gepubliceerde link op het tabblad Samenvatting.

Schermopname van de koppeling naar gepubliceerde build-artifacten.

Op de pagina Artefacten worden de gepubliceerde buildartefacten weergegeven.

Schermopname van gepubliceerde buildartefacten.

Schermopname van gepubliceerde buildartefacten voor één taak.

Selecteer het tabblad Tests om de testresultaten weer te geven.

Schermopname van de resultaten van de pijplijntest.

Opschonen

Als u klaar bent met de pijplijn die u hebt gemaakt, kunt u deze verwijderen.

  1. Selecteer Pijplijnen in het linkernavigatiemenu van uw project.

  2. Beweeg in de lijst met pijplijnen de muisaanwijzer over de pijplijn die u hebt gemaakt, selecteer het pictogram Meer acties rechts en selecteer vervolgens Verwijderen.

    Of selecteer de pijplijn en selecteer op de pagina Pijplijn het pictogram Meer acties rechtsboven en selecteer Vervolgens Verwijderen.

  3. Voer de naam van de pijplijn in en selecteer vervolgens Verwijderen opnieuw.

U hebt met succes een pijplijn gemaakt en uitgevoerd waarmee een Python-app is gebouwd en getest. U kunt nu Azure Pipelines gebruiken om Python-apps en -scripts te bouwen, testen en implementeren als onderdeel van uw CI/CD-proces.

Volgende stap