Test e deployment dell'applicazione

ID regione

REGION_ID è un codice abbreviato assegnato da Google in base all'area geografica selezionata al momento della creazione dell'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID di area geografica potrebbero essere simili ai codici di paese e provincia di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID area geografica è facoltativo nell'URL.

Scopri di più sugli ID dell'area geografica.

Scopri come eseguire la tua applicazione localmente, come eseguirne il deployment e come testarla in App Engine.

Esecuzione in locale

Per testare la funzionalità della tua applicazione prima del deployment, esegui l'applicazione nel tuo ambiente locale con gli strumenti di sviluppo che utilizzi abitualmente.

Prima di eseguire il deployment dell'applicazione

Prima di eseguire il deployment dell'applicazione:

Deployment dell'applicazione

Puoi utilizzare una delle seguenti tecniche per eseguire il deployment dell'app:

Per eseguire il deployment delle app in modo programmatico, utilizza l'API amministrativa.

Deployment del codice sorgente dell'app

Se utilizzi Maven o Gradle per gestire le build locali della tua app e se tutte le dipendenze dell'app sono pubblicamente disponibili per il download, puoi inserire il comando gcloud app deploy dalla directory che contiene il file pom.xml o build.gradle della tua app:

gcloud app deploy

Il comando indica a Cloud Build di utilizzare i Buildpack di App Engine per creare l'applicazione ed eseguirne il deployment su App Engine.

Se utilizzi Maven:

  • Il buildpack utilizza il seguente comando di build: mvn clean package --batch-mode -DskipTests

  • Se la directory principale della tua app contiene un file mvnw, il comando build sostituisce ./mvnw al posto di mvn. Cloud Build cerca quindi nella directory target il file .jar con una voce manifest della classe principale e crea un elemento entrypoint con il valore java -jar <jarfile>.

Se utilizzi Gradle:

  • Il buildpack utilizza il seguente comando di build: gradle clean assemble -x test --build-cache

  • Se la directory principale della tua app contiene un file gradlew, il comando di build sostituisce ./gradlew al posto di gradle. Cloud Build cerca quindi nella directory build/libs il file .jar con una voce manifest della classe principale e crea un elemento entrypoint con il valore java -jar <jarfile>.

  • Assicurati che non sia presente pom.xml nella directory principale del progetto. I progetti Maven hanno la precedenza sui progetti Gradle.

Visualizzazione dei log di build

I flussi di Cloud Build vengono generati ed eseguiti dai log e puoi visualizzarli nella sezione della cronologia di Cloud Build di Cloud Console. Per visualizzare le build nell'area geografica dell'app, utilizza il menu a discesa Area geografica nella parte superiore della pagina per scegliere l'area geografica in base alla quale filtrare.

Tieni presente quanto segue in merito a questa tecnica di deployment:

  • Se la tua app ha dipendenze disponibili solo a livello locale, Cloud Build non è in grado di crearla e il deployment non andrà a buon fine. In questo caso, consigliamo di utilizzare invece il plug-in Maven o Gradle di App Engine.

  • La creazione di un'app utilizza la quota di Cloud Build e l'archiviazione del codice sorgente dell'app utilizza la quota di Cloud Storage. Cloud Build e Cloud Storage forniscono quote gratuite, per cui non ti sarà addebitato il deployment delle applicazioni di App Engine finché non avrai superato le quote gratuite. Per informazioni, consulta la pagina Prezzi.

  • Al momento non è possibile specificare argomenti aggiuntivi per il comando di build Gradle. Per ulteriori informazioni, consulta lo strumento Google Issue Tracker.

Utilizzo del plug-in Maven o Gradle di App Engine

App Engine fornisce i plug-in Maven e Gradle che puoi utilizzare per creare ed eseguire il deployment dell'app. Ad esempio, dopo aver configurato il plug-in App Engine Maven, puoi inserire il seguente comando dalla directory che contiene il file pom.xml del tuo progetto:

mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID

Sostituisci PROJECT_ID con l'ID del progetto Cloud. Se il file pom.xml specifica il tuo ID progetto, non devi includere la proprietà -Dapp.deploy.projectId nel comando che esegui.

Per ulteriori informazioni, consulta le sezioni Utilizzo di Apache Maven e del plug-in App Engine o di Utilizzo di Gradle e del plug-in App Engine.

Deployment di un JAR eseguibile

Usa qualsiasi framework di build per creare un jar eseguibile localmente, quindi esegui una delle seguenti operazioni a seconda che tu abbia creato un file app.yaml per la tua app:

  • Se hai creato un file app.yaml:

    1. Copia il file nella stessa directory del file JAR eseguibile che hai creato.

    2. Nella directory contenente il app.yaml e il tuo JAR, inserisci il seguente comando:

      gcloud app deploy
  • Se non hai creato un file app.yaml, inserisci il comando seguente:

    gcloud app deploy your-executable.jar

    gcloud app deploy creerà un file app.yaml contenente le impostazioni minime, utilizzando tutti i valori predefiniti.

Ignorare i file

Puoi utilizzare un file .gcloudignore per specificare i file e le directory che non verranno caricati in App Engine quando esegui il deployment dei servizi. Questo è utile per ignorare gli artefatti delle build e altri file che non devono essere caricati con il tuo deployment.

Gestione delle immagini build

Ogni volta che esegui il deployment di una nuova versione, l'immagine del container viene creata tramite il servizio Cloud Build. L'immagine del container viene creata nell'area geografica dell'app e viene quindi eseguita nell'ambiente standard di App Engine.

Le immagini container create vengono archiviate nella cartella app-engine-tmp/app in Container Registry. Puoi scaricare queste immagini per tenerle o eseguirle altrove. Una volta completato il deployment, App Engine non ha più bisogno delle immagini container. Tieni presente che non vengono eliminati automaticamente, quindi per evitare di raggiungere la quota di spazio di archiviazione, puoi eliminare in sicurezza le immagini che non ti servono. Per ulteriori informazioni sulla gestione delle immagini in Container Registry, consulta la documentazione di Container Registry.

Visualizzazione dell'applicazione

Dopo aver eseguito il deployment dell'applicazione in App Engine, puoi eseguire il comando seguente per avviare il browser e visualizzarlo all'indirizzo https://PROJECT_ID.REGION_ID.r.appspot.com:

gcloud app browse

Test su App Engine prima di spostare il traffico

Prima di configurare una nuova versione per ricevere il traffico, puoi testarla su App Engine. Ad esempio, per testare una nuova versione del servizio default:

  1. Esegui il deployment della nuova versione, ma impedisci il routing automatico del traffico alla nuova versione:

    mvn appengine:deploy -Dapp.deploy.projectId=PROJECT_ID -Dapp.deploy.promote=False

  2. Accedi alla nuova versione accedendo al seguente URL:

    https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

    Ora puoi testare la nuova versione nell'ambiente di runtime di App Engine. Puoi eseguire il debug dell'applicazione visualizzandone i log. Per ulteriori informazioni, consulta la pagina relativa alla scrittura dei log delle applicazioni.

    App Engine instrada le richieste inviate a https://PROJECT_ID.REGION_ID.r.appspot.com alla versione configurata in precedenza per ricevere il traffico.

  3. Quando vuoi inviare traffico alla nuova versione, utilizza Cloud Console per eseguire la migrazione del traffico:

    Gestisci le versioni

    Seleziona la versione appena sottoposta a deployment e fai clic su Esegui la migrazione del traffico.

Puoi utilizzare la stessa procedura per testare nuove versioni di altri servizi sostituendo default nell'URL con il tuo nome del servizio:

https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

Per ulteriori informazioni sul targeting di servizi e versioni specifici, consulta la pagina Modalità di routing delle richieste.

Utilizzo delle variabili di ambiente di build

Puoi anche impostare variabili di ambiente di build per i runtime che supportano i buildpack.

Le variabili di ambiente di build sono coppie chiave/valore sottoposte a deployment insieme a un'app che consente di trasmettere informazioni di configurazione ai buildpack. Ad esempio, potresti voler personalizzare le opzioni del compilatore. Puoi aggiungere o rimuovere queste variabili di ambiente di build configurando il campo build_env_variables nel file app.yaml.

Utilizzo di Cloud Debugger

Puoi utilizzare Debugger per ispezionare lo stato dell'app di cui hai eseguito il deployment in qualsiasi posizione del codice, senza arrestare o rallentare l'app in esecuzione.

Per utilizzare Debugger con un'app Java 11, devi includere il seguente flag nel campo entrypoint del file app.yaml:

-agentpath:/opt/cdbg/cdbg_java_agent.so=--log_dir=/var/log

Se hai già specificato l'elemento entrypoint in app.yaml, aggiungi il flag agentepercorso al comando java nel campo entrypoint.

Se non hai specificato il campo entrypoint o se generi il file app.yaml quando esegui il deployment dell'app, App Engine aggiunge il flag al comando che utilizza per avviare l'app.

Utilizzo di Cloud Profiler

Cloud Profiler è un profiler statistica a bassa overhead che raccoglie continuamente le informazioni sull'utilizzo della CPU e sull'allocazione della memoria dalle applicazioni di produzione. Attribuisce queste informazioni al codice sorgente dell'app, aiutandoti a identificare le parti dell'app che consumano più risorse e illuminando in altro modo le caratteristiche delle prestazioni del codice.

Per utilizzare Cloud Profiler, imposta i file di configurazione dell'app come descritto in Avvio del programma e riesegui il deployment dell'app.