Distribuzione della tua app dal codice di origine del repository

È possibile distribuire l'applicazione direttamente dal codice sorgente presente in un repository Git utilizzando la console e la CLI di IBM Cloud® Code Engine. Scopri quali vantaggi puoi ottenere costruendo la tua immagine con Code Engine.

Distribuzione della tua app dal codice sorgente del repository dalla console

Puoi distribuire la tua applicazione direttamente dal codice sorgente con la console.

Prima di iniziare, pianifica la tua build. Puoi anche trovare suggerimenti per creare un Dockerfile.

Code Engine può eseguire automaticamente il push (caricamento) delle immagini negli spazi dei nomi IBM Cloud® Container Registry nel tuo account e persino creare uno spazio dei nomi per te. Per caricare le immagini in un account Container Registry diverso o in un account hub Docker privato, vedi Accesso ai registri del contenitore.

Per ulteriori informazioni sulle autorizzazioni richieste per accedere ai registri delle immagini, consultare Impostazione delle autorizzazioni per i registri delle immagini.

  1. Apri la console Code Engine.
  2. Seleziona " Inizia a creare ".
  3. Seleziona un progetto dall'elenco dei progetti disponibili. È anche possibile crearne uno nuovo. Nota che devi avere un progetto selezionato per distribuire un'applicazione.
  4. Seleziona " Applicazione ".
  5. Inserisci un nome per l'applicazione. Assegna alla tua applicazione un nome che sia univoco all'interno del progetto.
  6. Seleziona " Crea immagine del container dal codice sorgente ".
  7. Fare clic su Specifica dettagli build.
  8. Selezionare un repository di origine, ad esempio https://github.com/IBM/CodeEngine. Poiché stiamo utilizzando un'origine di esempio che non richiede credenziali, seleziona None per l'accesso al repository del codice. Facoltativamente, è possibile fornire un nome ramo. Se non fornisci un nome ramo e lasci il campo vuoto, Code Engine utilizza automaticamente il ramo predefinito del repository specificato. Fai clic su Next.
  9. Selezionare una strategia per la propria build e le relative risorse. Per ulteriori informazioni sulle opzioni di creazione, consultare Pianificazione della creazione. Fai clic su Next.
  10. Seleziona un'ubicazione del registro del contenitore, ad esempio IBM Registry Dallas per specificare dove archiviare l'immagine del tuo output di build. Se il tuo registro è privato, devi configurare l'accesso ad esso.
  11. Fornire le informazioni di registro su dove archiviare l'immagine dell'output di build. Seleziona un segreto del Registro esistente oppure creane uno nuovo. Se stai creando la tua immagine in un'istanza Container Registry che si trova nel tuo account, puoi selezionare Code Engine managed secret e lasciare che Code Engine crei e gestisca il segreto per te.
  12. Seleziona uno spazio dei nomi, un nome e una tag per la tua immagine. Se stai creando la tua immagine in un'istanza IBM Cloud Container Registry che si trova nel tuo account, puoi selezionare uno spazio dei nomi esistente o lasciare che Code Engine crei e gestisca lo spazio dei nomi per te.
  13. Fai clic su Done.
  14. Modifica le impostazioni di runtime o le variabili di ambiente per la tua applicazione. Per ulteriori informazioni su queste opzioni, consulta Opzioni per la visibilità dell'endpoint delle applicazioni e Opzioni per la distribuzione di un'applicazione.
  15. Fai clic su Crea.
  16. Una volta inoltrata l'esecuzione della tua build, l'immagine del contenitore generata viene inviata a Container Registry e la tua applicazione estrae l'immagine e la distribuisce per te. Una volta modificato lo stato dell'applicazione in Pronto, è possibile verificare l'applicazione. Fare clic su Applicazione di test, quindi fare clic su Invia richiesta nel riquadro Applicazione di test. Per aprire l'applicazione in una pagina web, fare clic su Applicazione URL.

Le esecuzioni di build completate vengono infine eliminate automaticamente. Quando l'esecuzione della build si basa sulla configurazione della build, questa viene eliminata dopo 3 ore se l'esecuzione della build ha esito positivo. Se l'esecuzione della build non va a buon fine, tale esecuzione viene eliminata dopo 48 ore.

Ora che hai distribuito la tua applicazione, puoi visualizzare le informazioni sulle revisioni dell'applicazione e qualsiasi istanza in esecuzione e i dettagli di configurazione.

Distribuzione della tua applicazione dal codice sorgente del repository con la CLI

È possibile distribuire l'applicazione direttamente dal codice di origine del repository con la CLI. Utilizza il app create per creare un'immagine dal codice sorgente del tuo repository Git e distribuire l'applicazione in modo che faccia riferimento a tale immagine.

Prima di iniziare

In questo scenario, Code Engine crea un'immagine dalla tua origine del repository Git, carica automaticamente l'immagine al registro del contenitore e quindi crea e distribuisce la tua applicazione per fare riferimento a questa immagine creata. È necessario fornire solo un nome per l'applicazione e l'indirizzo URL del repository Git, se l'immagine deve trovarsi in un account IBM Cloud® Container Registry. In questo caso, Code Engine gestisce lo spazio dei nomi per voi. Tuttavia, se si desidera utilizzare un registro del contenitore differente, è necessario specificare l'immagine e un segreto del registro per tale registro del contenitore. Per un elenco completo delle opzioni, consultare il comando ibmcloud ce app create.

Per ulteriori informazioni sulle autorizzazioni richieste per accedere ai registri delle immagini, consultare Impostazione delle autorizzazioni per i registri delle immagini.

Il seguente comando application create di esempio crea e distribuisce l'applicazione myapp, che fa riferimento ad una immagine creata dall'origine di build https://github.com/IBM/CodeEngine. Questo comando crea automaticamente l'immagine e carica l'immagine in uno spazio dei nomi IBM Cloud® Container Registry nel tuo account e l'applicazione fa riferimento a questa immagine creata. Specificando l'opzione --build-context-dir, la build utilizza l'origine nella directory helloworld. Questo esempio di comando utilizza la strategia dockerfile predefinita e la dimensione di build medium predefinita. Poiché il nome del ramo del repository non viene specificato con l'opzione --build-commit, Code Engine utilizza automaticamente il ramo predefinito del repository specificato.

ibmcloud ce application create --name myapp --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld

Output di esempio

Creating application 'myapp'...
Submitting build run 'myapp-run-220411-13abcdefg'...
Creating image 'private.us.icr.io/ce--abcde-4svg40kna19/app-myapp:220411-1756-if8jv'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220411-13abcdefg' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK
https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud

L'output del comando application create fornisce informazioni sull'avanzamento dell'esecuzione della build prima che l'app venga creata e distribuita.

In questo esempio, l'immagine creata viene caricata nello spazio dei nomi di ce--abcde-4svg40kna19 in Container Registry.

La seguente tabella riepiloga le opzioni utilizzate con il comando app create in questo esempio. Per ulteriori informazioni sul comando e le sue opzioni, consultare il comando ibmcloud ce app create.

Descrizione del comando
Opzione Descrizione
--name

Il nome dell'applicazione. Utilizzare un nome univoco all'interno del progetto. Questo valore è obbligatorio.

  • Il nome deve iniziare con una lettera minuscola.
  • Il nome deve terminare con un carattere alfanumerico minuscolo.
  • Il nome deve essere di 63 caratteri o meno e può contenere lettere, numeri e trattini (-).
--build-source URL del repository Git che contiene il codice sorgente; ad esempio, https://github.com/IBM/CodeEngine.
--build-context-dir La directory nel repository che contiene il file buildpacks o il Dockerfile. Questo valore è facoltativo.

Il seguente output mostra il risultato del comando application get per questo esempio, incluse le informazioni sulla build.

Output di esempio

[...]
Name:          myapp  
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
Project Name:  myproject  
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           2d15h
Created:       2022-04-14T16:10:11-04:00
URL:                https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
Console URL:        https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
Status Summary:  Application deployed successfully
Environment Variables:    
    Type     Name             Value  
    Literal  CE_API_BASE_URL  https://api.private.us-south.codeengine.cloud.ibm.com
    Literal  CE_APP           myapp  
    Literal  CE_DOMAIN        us-south.codeengine.appdomain.cloud  
    Literal  CE_PROJECT_ID    abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Literal  CE_REGION        us-south  
    Literal  CE_SUBDOMAIN     abcdabcdab
Image:                  private.us.icr.io/ce--27fe9-4svg40kna19/app-myapp:220414-2010-sqsoj
Resource Allocation:
  CPU:                1
  Ephemeral Storage:  400M
  Memory:             4G
Registry Secrets:
  ce-auto-icr-private-us-south
Revisions:
  myapp-00001:
    Age:                23m
    Latest:             true
    Traffic:            100%
    Image:              private.us.icr.io/ce--27fe9-4svg40kna19/app-myapp:220414-2010-sqsoj (pinned to 86944c)  
    Running Instances:  0
Runtime:
  Concurrency:    100
  Maximum Scale:  10
  Minimum Scale:  0
  Timeout:        300
Build Information:
  Build Run Name:     myapp-run-220414-161009244
  Build Type:         git
  Build Strategy:     dockerfile-medium
  Timeout:            600
  Source:             https://github.com/IBM/CodeEngine
  Context Directory:  helloworld
  Dockerfile:         Dockerfile
  Build Run Summary:  Succeeded
  Build Run Status:   Succeeded
  Build Run Reason:   All Steps have completed executing
  Run 'ibmcloud ce buildrun get -n myapp-run-220414-161009244' for details.
[...]

Ora che la tua applicazione è creata e distribuita dal codice sorgente del repository, puoi aggiornarla per soddisfare le tue esigenze utilizzando il comando ibmcloud ce app update. Per ulteriori informazioni sull'aggiornamento delle applicazioni, vedi Aggiornamento della tua app. Se vuoi aggiornare la tua origine da utilizzare con la tua applicazione, devi fornire l'opzione --build-source nel comando application update.

Quando la tua applicazione viene distribuita dal codice di origine del repository o dall'origine locale con la CLI, l'esecuzione della build risultante non si basa su una configurazione di build. Le esecuzioni di build completate vengono infine eliminate automaticamente. Le esecuzioni di build che non si basano su una configurazione di build vengono eliminate dopo 1 ora se l'esecuzione di build ha esito positivo. Se l'esecuzione della build non ha esito positivo, questa esecuzione della build viene eliminata dopo 24 ore. È possibile visualizzare solo le informazioni su questa esecuzione di build con la CLI. Non è possibile visualizzare questa esecuzione di build nella console.

Passi successivi

Dopo che la tua applicazione è stata distribuita, puoi aggiornare la tua applicazione distribuita e il suo codice di riferimento utilizzando uno qualsiasi dei seguenti modi, indipendentemente da come hai creato o precedentemente aggiornato la tua applicazione:

  • Se hai un'immagine del contenitore, secondo lo standard OCI(Open Container Initiative), devi fornire solo un riferimento all'immagine, che punta all'ubicazione del tuo registro del contenitore quando distribuisci la tua applicazione. Puoi distribuire la tua applicazione con una immagine in un registro pubblico o in un registro privato.

    Se hai creato la tua applicazione utilizzando il comando app create e hai specificato l'opzione --build-source per creare l'immagine del contenitore dall'origine locale o del repository e vuoi modificare la tua applicazione in modo che punti a un'altra immagine del contenitore, devi prima rimuovere l'associazione della build dalla tua applicazione. Ad esempio, eseguire ibmcloud ce application update -n APP_NAME --build-clear. Dopo aver rimosso l'associazione della build dalla propria applicazione, è possibile aggiornare l'applicazione in modo che faccia riferimento a una diversa immagine.

  • Se stai iniziando con il codice sorgente che risiede in un repository Git, puoi scegliere di lasciare che Code Engine si occupi della creazione dell'immagine dalla tua origine e della distribuzione dell'applicazione con una singola operazione. In questo scenario, Code Engine carica la tua immagine in IBM Cloud® Container Registry. Per ulteriori informazioni, vedi Distribuzione della tua applicazione dal codice sorgente del repository. Se vuoi più controllo sulla build della tua immagine, puoi scegliere di creare l'immagine con Code Engine prima di distribuire la tua applicazione.

  • Se stai iniziando con il codice sorgente che risiede su una workstation locale, puoi scegliere di consentire a Code Engine di creare l'immagine dalla tua origine e distribuire l'applicazione con un singolo comando della CLI. In questo scenario, Code Engine carica la tua immagine in IBM Cloud® Container Registry. Per ulteriori informazioni, vedi Distribuzione della tua applicazione dal codice di origine locale con la CLI. Se vuoi più controllo sulla build della tua immagine, puoi scegliere di creare l'immagine con Code Engine prima di distribuire la tua applicazione.

    Ad esempio, potresti scegliere di consentire a Code Engine di gestire la creazione della tua origine locale mentre evolvi lo sviluppo della tua origine per l'applicazione. Quindi, una volta maturata l'immagine, puoi aggiornare l'applicazione distribuita per fare riferimento all'immagine specifica che desideri. È possibile ripetere questo processo in base alle necessità.

Quando distribuisci la tua applicazione aggiornata, viene scaricata e distribuita l'ultima versione della tua immagine del contenitore di riferimento, a meno che non venga specificata una tag per l'immagine. Se viene specificata una tag per l'immagine, l'immagine contrassegnata viene utilizzata per la distribuzione.

Cerchi altri esempi di codice? Dai un'occhiata agli esempi disponibili nel repository " IBM Cloud Code Engine " su GitHub.