Condividi tramite


Compilare e pubblicare un'app Python

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

In questa guida introduttiva si crea una pipeline che compila e testa un'app Python. Si vedrà come usare Azure Pipelines per compilare, testare e distribuire script e app Python come parte del sistema di integrazione continua e recapito continuo (CI/CD).

Prerequisiti

Python è preinstallato in agenti ospitati da Microsoft per Linux, macOS e Windows. Non è necessario configurare altro per compilare progetti Python. Per vedere quali versioni di Python sono preinstallate, vedere Usare un agente ospitato da Microsoft.

Creare una copia tramite fork del codice di esempio

Creare un fork del repository Python di esempio nell'account GitHub.

  1. Passare al repository python-sample-vscode-flask-tutorial .
  2. Selezionare Fork nell'angolo superiore destro della pagina.
  3. Selezionare l'account GitHub. Per impostazione predefinita, il fork è denominato come repository padre, ma è possibile denominarlo in modo diverso.

Importante

Durante le procedure seguenti, potrebbe essere richiesto di creare una connessione al servizio GitHub o reindirizzare a GitHub per accedere, installare Azure Pipelines o autorizzare Azure Pipelines. Seguire le istruzioni visualizzate per completare il processo. Per altre informazioni, vedere Accedere ai repository GitHub.

Creare la pipeline

  1. Nel progetto Azure DevOps selezionare Pipeline>di creazione pipeline e quindi Selezionare GitHub come percorso del codice sorgente.
  2. Nella schermata Selezionare un repository selezionare il repository di esempio con fork.
  3. Nella schermata Configura la pipeline, selezionare Pipeline di base.

Personalizzare la pipeline

Nella schermata Esaminare il file YAML della pipeline sostituire il contenuto del file di azure-pipelines.yml generato con il codice seguente. Il codice:

  • Installa le versioni e le dipendenze di Python necessarie.
  • I pacchetti creano artefatti in un archivio ZIP.
  • Pubblica l'archivio nella pipeline.
  • Esegue i test.
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'

Personalizzare azure-pipelines.yml in modo che corrisponda alla configurazione del progetto.

  • Se si dispone di un pool di agenti diverso, modificare il parametro del pool name .
  • Se necessario, modificare la versione di Python in una versione installata nell'agente self-hosted.
  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'

Eseguire la pipeline

Selezionare Salva ed esegui, quindi selezionare Salva ed esegui di nuovo.

La scheda Riepilogo mostra lo stato dell'esecuzione della pipeline.

Per visualizzare l'artefatto di compilazione, selezionare il collegamento pubblicato nella scheda Riepilogo .

Screenshot del collegamento degli artefatti di compilazione pubblicati.

La pagina Artefatti mostra gli artefatti di compilazione pubblicati. Screenshot degli artefatti di compilazione pubblicati.

Screenshot del processo Python completato.

La pagina Artefatti mostra gli artefatti di compilazione pubblicati. Screenshot del collegamento degli artefatti di compilazione pubblicati.

Per visualizzare i risultati del test, selezionare la scheda Test .

Screenshot dei risultati dei test della pipeline.

Selezionare Esegui.

Il numero di build viene visualizzato nella parte superiore della pagina. Selezionare il numero di build per visualizzare i dettagli della compilazione.

Screenshot del collegamento di compilazione della pipeline.

La scheda Riepilogo mostra lo stato dell'esecuzione della pipeline.

Per scaricare l'artefatto di compilazione, selezionare il collegamento a discesa nella sezione Build artifacts published (Compila artefatti pubblicati ).

Screenshot del processo Python completato.

Per visualizzare i risultati del test, selezionare la scheda Test .

Screenshot dei risultati dei test della pipeline.

Eseguire la pulizia

Al termine di questa guida introduttiva, è possibile eliminare il progetto Azure DevOps creato.

  1. Nel progetto selezionare l'icona a forma di ingranaggio Impostazioni progetto nell'angolo inferiore sinistro della pagina.
  2. Nella parte inferiore della pagina panoramica del progetto selezionare Elimina.
  3. Immettere il nome del progetto e selezionare Elimina.

È stata creata ed eseguita correttamente una pipeline che ha compilato e testato un'app Python. È ora possibile usare Azure Pipelines per compilare, testare e distribuire app e script Python come parte del sistema di integrazione continua e recapito continuo (CI/CD).

Passaggi successivi