Condividi tramite


Compilare e pubblicare un'app Python

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

In questo avvio rapido, 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 Software.

Prodotto Requisiti
Azure DevOps - Un progetto Azure DevOps.
- La possibilità di eseguire pipeline su agenti ospitati da Microsoft. È possibile acquistare un incarico parallelo oppure richiedere un piano gratuito.
- Conoscenza di base di YAML e Azure Pipelines. Per maggiori informazioni, vedere Creare la prima pipeline.
Autorizzazioni - :
     - Per creare una pipeline, è necessario trovarsi nel gruppo Collaboratori e il gruppo deve avere l'autorizzazione Crea pipeline di compilazione impostata su Consenti. I membri del gruppo Project Administrators possono gestire le pipeline.
    - Per creare connessioni al servizio: è necessario disporre del ruolo di Administrator o Creator per le connessioni al servizio .
GitHub - Un account GitHub.
- Una connessione al servizio GitHub per autorizzare Azure Pipelines.
Prodotto Requisiti
Azure DevOps - Un progetto Azure DevOps.
- Un agente self-hosted con Python 3.12 o un'altra versione di Python installata. Per crearne uno, vedere Agenti self-hosted.
- Conoscenza di base di YAML e Azure Pipelines. Per maggiori informazioni, vedere Creare la prima pipeline.
Autorizzazioni - :
    - Per creare una pipeline, è necessario trovarsi nel gruppo Collaboratori e il gruppo deve avere l'autorizzazione Crea pipeline di compilazione impostata su Consenti. I membri del gruppo Project Administrators possono gestire le pipeline.
    - Per creare connessioni al servizio: è necessario disporre del ruolo di Administrator o Creator per le connessioni al servizio .
GitHub - Un account GitHub.
- Una connessione al servizio GitHub per autorizzare Azure Pipelines.

Importante

Le procedure di GitHub potrebbero richiedere di eseguire una o più delle azioni seguenti in GitHub:

  • Accedere.
  • Autorizzare Azure Pipelines.
  • Eseguire l'autenticazione alle organizzazioni GitHub.
  • Installare l'app Azure Pipelines.

Seguire le istruzioni per completare i processi necessari. Per altre informazioni, vedere Accedere ai repository GitHub.

Creare una copia tramite fork del codice di esempio

Effettua un fork del repository Python di esempio sul tuo account GitHub.

  1. Accedi al repository python-sample-vscode-flask-tutorial.
  2. Selezionare Fork in alto a destra.
  3. Assicurarsi che il nome dell'account GitHub sia selezionato in Proprietario e selezionare Crea fork. Il fork ha lo stesso nome del repository padre per impostazione predefinita, ma è possibile dargli un nome diverso.

Crea la tua pipeline

  1. Nel progetto Azure DevOps selezionare Pipeline dal menu di spostamento a sinistra e quindi selezionare Nuova pipeline oppure Crea pipeline se la pipeline è la prima nel progetto.
  2. Nella schermata Where is your code (Dove è il codice ) selezionare GitHub come percorso del codice sorgente.
  3. Nella schermata Selezionare un repository, selezionare il fork del repository di esempio Python.
  4. 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 azure-pipelines.yml generato con il codice seguente. Il codice esegue le azioni seguenti in tre diverse versioni di Python:

  1. Installa la versione e le dipendenze di Python necessarie.
  2. I pacchetti creano artefatti in un archivio ZIP.
  3. Pubblica l'archivio alla tua pipeline.
  4. Esegue 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'

Nella schermata Esaminare il file YAML della pipeline, sostituire il contenuto del file azure-pipelines.yml generato con il codice seguente. Il codice esegue le azioni seguenti:

  1. Installa la versione e le dipendenze di Python necessarie.
  2. I pacchetti creano artefatti in un archivio ZIP.
  3. Pubblica l'archivio alla tua pipeline.
  4. Esegue test.

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

  • Se si dispone di un pool di agenti diverso, sostituire il segnaposto del pool name con il nome del pool o default.
  • Se necessario, modificare Python versionSpec 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'

Esegui la pipeline

Selezionare Salva ed esegui, quindi selezionare Salva ed esegui di nuovo. È possibile selezionare Job sulla schermata Riepilogo per vedere il lavoro in esecuzione.

Il processo viene eseguito tre volte, una volta per ogni versione di Python specificata. Le tre versioni possono essere eseguite in parallelo su agenti diversi.

Screenshot del lavoro Python completato con più versioni.

Screenshot di un'attività Python singola completata.

Visualizzare gli artefatti e i risultati dei test

Per visualizzare gli artifact di build, selezionare il collegamento [N] pubblicato nella scheda Riepilogo.

Screenshot del link degli artefatti di build pubblicati.

La pagina degli Artefatti mostra gli artefatti di build pubblicati.

Screenshot degli artefatti di build pubblicati.

Screenshot degli artefatti di compilazione pubblicati per un singolo processo.

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

Screenshot dei risultati dei test della pipeline.

Eseguire la pulizia

Se hai finito di utilizzare la pipeline che hai creato, puoi eliminarla.

  1. Selezionare Pipeline dal menu di navigazione a sinistra del progetto.

  2. Nell'elenco della pipeline passare il puntatore del mouse sulla pipeline creata, selezionare l'icona Altre azioni a destra e quindi selezionare Elimina.

    In alternativa, selezionare la pipeline e nella pagina della pipeline selezionare l'icona Altre azioni in alto a destra e quindi selezionare Elimina.

  3. Immettere il nome della pipeline e quindi selezionare di nuovo 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 processo CI/CD.

Passo successivo