Crea e testa le applicazioni Python

Questa pagina descrive come configurare Cloud Build per creare e testare le tue applicazioni Python, caricare gli artefatti su Artifact Registry, generare informazioni sulla provenienza e salvare i log di test in Cloud Storage.

Cloud Build ti consente di utilizzare qualsiasi immagine container disponibile pubblicamente per eseguire le tue attività. Il pubblico Immagine python da Docker Hub sono preinstallati con gli strumenti python e pip. Puoi configurare Cloud Build usa questi strumenti per installare le dipendenze, creare ed eseguire test delle unità con questi strumenti.

Prima di iniziare

Le istruzioni in questa pagina presuppongono che tu abbia familiarità con Python. Inoltre:

  • Abilita le API Cloud Build, Artifact Registry, and Cloud Storage.

    Abilita le API

  • Per eseguire i comandi gcloud in questa pagina, installa Google Cloud CLI.
  • Tieni a portata di mano il tuo progetto Python.
  • Avere un repository Python in Artifact Registry. Se non ne hai uno, crea un nuovo repository.
  • Se vuoi archiviare i log di test in Cloud Storage, crea un bucket in Cloud Storage.

Autorizzazioni IAM richieste

Per istruzioni sulla concessione di questi ruoli, consulta Concessione di un ruolo utilizzando la pagina IAM.

Configurazione di build Python

Questa sezione illustra un file di configurazione di compilazione di esempio per un'app Python. Ha i passaggi per creare i requisiti di installazione, aggiungere i test delle unità e, una volta superati i test, creare ed eseguire il deployment dell'app.

  1. Nella directory principale del progetto, crea un file di configurazione di Cloud Build denominato cloudbuild.yaml.

  2. Requisiti di installazione: è preinstallata l'immagine python di Docker Hub con pip. Per installare le dipendenze da pip, aggiungi un passaggio di build con seguenti campi:

    • name: imposta il valore di questo campo su python o python:<tag> per utilizzare il valore un'immagine Python di Docker Hub per questa attività. Per visualizzare un elenco dei tag disponibili per altre immagini Python, consulta il riferimento di Docker Hub per l'immagine Python.
    • entrypoint: l'impostazione di questo campo esegue l'override del punto di ingresso predefinito dell'immagine a cui si fa riferimento in name. Imposta il valore di questo campo su pip per richiamare pip come punto di ingresso del passaggio di build ed esegui i comandi pip.
    • args: il campo args di un passaggio di build accetta un elenco di argomenti e e le passa all'immagine a cui fa riferimento il campo name. Passa gli argomenti per eseguire il comando pip install in questo campo. --user in: pip install assicura che i successivi passaggi di build possano accedere ai moduli installato in questo passaggio di build.

    Il seguente passaggio di build aggiunge argomenti ai requisiti di installazione:

     steps:
        - name: 'python'
          entrypoint: 'python'
          args: ['-m', 'pip', 'install', '--upgrade', 'pip']
        - name: python
          entrypoint: python
          args: ['-m', 'pip', 'install', 'build', 'pytest', 'Flask', '--user']
    
  3. Aggiungi i test delle unità: se hai definito i test delle unità nella tua applicazione utilizzando una di test come pytest, puoi configurare Cloud Build per eseguire i test aggiungendo i campi seguenti in un passaggio di build:

    • name: imposta il valore di questo campo su python per utilizzare l'immagine Python da Docker Hub per le tue attività.
    • entrypoint: imposta il valore di questo campo su python per eseguire i comandi python.
    • args: aggiungi gli argomenti per l'esecuzione del comando python pytest.

    Il passaggio di build seguente salva l'output del log pytest in un file XML JUNIT. Il nome di questo file è stato creato utilizzando $SHORT_SHA, la versione breve dell'ID commit associato con la tua build. Un passaggio di build successivo salverà i log di questo file in Cloud Storage.

        - name: 'python'
          entrypoint: 'python'
          args: ['-m', 'pytest', '--junitxml=${SHORT_SHA}_test_log.xml']
    
  4. Build: nel file di configurazione della build, definisci il generatore e il args per creare l'applicazione:

    • name: imposta il valore di questo campo su python per utilizzare l'immagine Python da Docker Hub per le tue attività.
    • entrypoint: imposta il valore di questo campo su python per eseguire i comandi python.
    • args: aggiungi gli argomenti per l'esecuzione della build.

    Il seguente passaggio di build avvia la build:

        - name: 'python'
          entrypoint: 'python'
          args: ['-m', 'build']
    
  5. Carica in Artifact Registry:

    Nel file di configurazione, aggiungi il campo pythonPackages e specifica il tuo repository Python in Artifact Registry:

        artifacts:
           pythonPackages:
           - repository: 'https://LOCATION-python.pkg.dev/PROJECT-ID/REPOSITORY'
              paths: ['dist/*']
    

    Sostituisci i seguenti valori:

    • PROJECT-ID è l'ID del progetto Google Cloud che contiene il tuo repository Artifact Registry.
    • REPOSITORY è l'ID del repository.
    • LOCATION è la località a livello di una o più regioni del repository.
  6. (Facoltativo) Attiva la generazione della provenienza

    Cloud Build può generare Build Livelli della catena di fornitura per artefatti software (SLSA) di provenienza dei metadati per contribuire a proteggere la pipeline di integrazione continua.

    Per abilitare la generazione della provenienza, aggiungi requestedVerifyOption: VERIFIED alla sezione options del file di configurazione.

  7. Salva i log di test in Cloud Storage: puoi configurare Cloud Build per archiviare eventuali log di test in Cloud Storage specificando un bucket esistente la posizione e il percorso dei log di test. Il seguente passaggio di build archivia i log di test che hai salvato nel file XML JUNIT in un bucket Cloud Storage:

        artifacts:
        objects:
           location: 'gs://${_BUCKET_NAME}/'
           paths:
              - '${SHORT_SHA}_test_log.xml'
    
  8. Avvia la build: manualmente o utilizzando i trigger di build.

    Una volta completata la build, puoi visualizzare i dettagli del repository in Artifact Registry.

    Puoi anche visualizzare i metadati di provenienza della build e convalidare la provenienza.

Passaggi successivi