Ambienti di sviluppo rapidi rapid-development-environments

Per distribuire le modifiche, gli ambienti di sviluppo cloud attuali richiedono l’utilizzo di un processo che utilizza regole estese di qualità e sicurezza del codice, denominate pipeline CI/CD. Per le situazioni in cui sono necessari cambiamenti rapidi e iterativi, Adobe ha introdotto ambienti di sviluppo rapido (RDE, Rapid Development Environments).

Gli RDE consentono agli sviluppatori di implementare e rivedere rapidamente le modifiche, riducendo al minimo il tempo necessario per testare le funzioni che hanno dimostrato di funzionare in un ambiente di sviluppo locale.

Una volta testate in un RDE, le modifiche possono essere distribuite in un ambiente di sviluppo Cloud regolare tramite la pipeline di Cloud Manager.

NOTE
Mettiti in contatto con gli sviluppatori RDE sul nostro Discord channel. Puoi porre domande o fornire feedback su argomenti RDE.

Guarda altri video dimostrativi come impostarla, come utilizzarloe ciclo di vita dello sviluppo utilizzo di RDE.

Introduzione introduction

Gli RDE possono essere utilizzati per codice, contenuto e configurazioni di Apache o Dispatcher. A differenza dei normali ambienti di sviluppo cloud, gli sviluppatori possono utilizzare strumenti della riga di comando locali per sincronizzare il codice generato localmente con un RDE.

A ogni programma viene fornito un RDE. Se sono presenti account Sandbox, vengono sospesi dopo alcune ore di non utilizzo.

Al momento della creazione, gli RDE vengono impostati sulla versione di Adobe Experience Manager (AEM) più recente disponibile. Un ripristino RDE, che può essere eseguito utilizzando Cloud Manager, esegue un ciclo dell’RDE e lo imposta sulla versione dell’AEM più recente disponibile.

In genere, un RDE viene utilizzato da un singolo sviluppatore in un determinato momento, per testare e eseguire il debug di una funzione specifica. Al termine della sessione di sviluppo, è possibile ripristinare lo stato predefinito dell’RDE per l’utilizzo successivo.

Ulteriori RDE possono essere concessi in licenza per programmi di produzione (non sandbox).

Abilitazione di RDE in un programma enabling-rde-in-a-program

Per creare un RDE per il programma, segui la procedura riportata di seguito.

  1. Accedi a Cloud Manager all’indirizzo my.cloudmanager.adobe.com e seleziona l’organizzazione appropriata.

  2. Fare clic sul programma al quale si desidera aggiungere un RDE per visualizzarne i dettagli.

  3. Per aggiungere un ambiente, dalla pagina Panoramica programma, accedi alla scheda Ambienti e fai clic su Aggiungi ambiente.

    Scheda Ambienti

    • L’opzione Aggiungi ambiente è disponibile anche nella scheda Ambienti.

      Scheda Ambienti

    • L’opzione Aggiungi ambiente potrebbe essere disattivata per mancanza di autorizzazioni o a seconda delle risorse concesse in licenza.

  4. Nella finestra di dialogo Aggiungi ambiente che viene visualizzata:

    • Seleziona Sviluppo rapido sotto Seleziona tipo di ambiente intestazione.
      • Il numero di ambienti disponibili/utilizzati viene visualizzato tra parentesi dopo il tipo di ambiente.
    • Fornisci un Nome per l'ambiente.
    • Fornisci un Descrizione per l'ambiente.
    • Seleziona un’Area geografica cloud.

    Finestra di dialogo Aggiungi ambiente

  5. Per aggiungere l’ambiente specificato, fai clic su Salva.

Il Panoramica schermata ora mostra il nuovo ambiente in Ambienti Card.

Al momento della creazione, gli RDE sono impostati sulla versione AEM più recente disponibile. Un ripristino RDE, che può essere eseguito anche utilizzando Cloud Manager, esegue un ciclo dell’RDE e lo imposta sulla versione dell’AEM più recente disponibile.

Per ulteriori informazioni sull’utilizzo di Cloud Manager per creare ambienti, gestire gli utenti che possono accedervi e assegnare domini personalizzati, consulta la documentazione di Cloud Manager.

Installazione degli strumenti della riga di comando RDE installing-the-rde-command-line-tools

Dopo aver aggiunto un RDE per il programma utilizzando Cloud Manager, puoi interagire con esso configurando gli strumenti della riga di comando come descritto nei passaggi seguenti:

IMPORTANT
Assicurati di disporre della versione più recente di Nodo e NPM installati ad Adobe I/O CLI e i relativi plug-in per funzionare correttamente.
  1. Installare gli strumenti CLI Adobe I/O seguendo la procedura descritta di seguito. qui.

  2. Installa il plug-in Adobe I/O CLI tools Cloud Manager e configurali come descritto qui.

  3. Installare il plug-in AEM RDE degli strumenti CLI di Adobe I/O eseguendo i seguenti comandi:

    code language-none
    aio plugins:install @adobe/aio-cli-plugin-aem-rde
    aio plugins:update
    
  4. Configura il plug-in cloud manager per l’ID organizzazione:

    aio config:set cloudmanager_orgid 4E03EQC05D34GL1A0B49421C@AdobeOrg

    e sostituisci la stringa alfanumerica con il tuo ID organizzazione, che può essere cercato utilizzando la strategia qui.

  5. Quindi, configura l’ID del programma:

    aio config:set cloudmanager_programid 12345

  6. Quindi, configura l’ID ambiente a cui verrà allegato l’RDE:

    aio config:set cloudmanager_environmentid 123456

  7. Al termine della configurazione del plug-in, accedi eseguendo

    aio login

    La risposta in caso di esito positivo dell’accesso dovrebbe essere simile all’output riportato di seguito, ma puoi ignorare i valori visualizzati.

    code language-none
    ...
    You are currently in:
    1. Org: <no org selected>
    2. Project: <no project selected>
    3. Workspace: <no workspace selected>
    

    Questo passaggio richiede l’iscrizione a Cloud Manager Sviluppatore - Cloud Service Profilo prodotto. Consulta questa pagina per ulteriori dettagli.

    In alternativa, puoi confermare di disporre di questo ruolo di sviluppatore se puoi accedere alla console per sviluppatori eseguendo questo comando:

    aio cloudmanager:environment:open-developer-console

    note tip
    TIP
    Se vedi il Warning: cloudmanager:list-programs is not a aio command. errore, è necessario installare aio-cli-plugin-cloudmanager eseguendo il comando seguente:
    code language-none
    aio plugins:install @adobe/aio-cli-plugin-cloudmanager
    
  8. Verificare che l'accesso sia stato completato correttamente eseguendo

    aio cloudmanager:list-programs

    Questo dovrebbe elencare tutti i programmi nell’organizzazione configurata.

Per ulteriori informazioni e dimostrazioni, guarda il tutorial video come impostare un RDE (06:24).

Installazione degli strumenti della riga di comando RDE (con modalità interattiva) installing-the-rde-command-line-tools-interactive

NOTE
Questo processo di configurazione non è ancora disponibile. Sostituirà il processo precedente in giugno.

Dopo aver aggiunto un RDE per il programma utilizzando Cloud Manager, puoi interagire con esso configurando gli strumenti della riga di comando come descritto nei passaggi seguenti:

IMPORTANT
Assicurati di disporre della versione più recente di Nodo e NPM installati ad Adobe I/O CLI e i relativi plug-in per funzionare correttamente.
  1. Installare gli strumenti Adobe I/O CLI in base a quanto segue procedura.

  2. Installare il plug-in RDE AEM strumenti CLI Adobe I/O:

    code language-none
    aio plugins:install @adobe/aio-cli-plugin-aem-rde
    aio plugins:update
    
  3. Configura il plug-in RDE per utilizzare la tua organizzazione, il tuo programma e il tuo ambiente. Il comando di configurazione riportato di seguito fornirà all'utente un elenco interattivo di programmi della propria organizzazione e mostrerà gli ambienti RDE di tale programma tra cui scegliere.

    code language-none
    aio login
    aio aem:rde:setup
    

    Il passaggio di configurazione può essere ignorato se l’obiettivo è quello di utilizzare un ambiente con script, nel qual caso i valori dell’organizzazione, del programma e dell’ambiente possono essere inclusi in ciascun comando. Per ulteriori informazioni, consulta i comandi rde riportati di seguito.

Configurazione interattiva

Il comando di installazione chiederà se la configurazione fornita deve essere memorizzata localmente o globalmente.

Setup the CLI configuration necessary to use the RDE commands.
? Do you want to store the information you enter in this setup procedure locally? (y/N)

Scegli no a

  • archiviare l'organizzazione, il programma e l'ambiente a livello globale nella configurazione aio.
  • utilizzare un solo RDE.

Scegli yes a

  • archiviare l'organizzazione, il programma e l'ambiente localmente nella directory corrente, in una .aio file. È utile se desideri eseguire il commit del file nel controllo della versione in modo che altri utenti che clonano l’archivio Git possano utilizzarlo.
  • utilizzare molti RDE, in modo che il passaggio a un’altra directory utilizzi tale configurazione.
  • utilizza la configurazione in un contesto programmatico come uno script, che può farvi riferimento.

Una volta selezionata la configurazione locale o globale, il comando di configurazione tenterà di leggere l’ID organizzazione dall’accesso corrente e quindi di leggere i programmi dell’organizzazione. Nel caso in cui l’organizzazione non possa essere trovata, puoi inserirla manualmente insieme ad alcune indicazioni.

 Selected only organization: XYXYXYXYXYXYXYXXYY
 retrieving programs of your organization ...

Una volta recuperati i programmi, l’utente può selezionare dall’elenco e anche digitare per filtrare.
Quando il programma è stato selezionato, viene elencato un elenco di ambienti RDE tra cui scegliere.
Se è disponibile un solo programma e/o ambiente RDE, viene selezionato automaticamente.

Per visualizzare il contesto dell’ambiente corrente, esegui:

aio aem rde setup --show

Il comando risponderà con un risultato simile a:

Current configuration: cm-p1-e1: programName - environmentName (organization: ...@AdobeOrg)

Utilizzo di RDE durante lo sviluppo di una nuova feature using-rde-while-developing-a-new-feature

L’Adobe consiglia il seguente flusso di lavoro per lo sviluppo di una nuova funzione:

  • Una volta raggiunta una milestone intermedia e convalidata correttamente localmente con l’SDK as a Cloud Service dell’AEM, invia il codice a un ramo della funzione Git. Il ramo non deve ancora far parte della riga principale, anche se l’impegno su Git è facoltativo. Ciò che costituisce un "traguardo intermedio" varia in base alle abitudini del team. Gli esempi includono alcune nuove righe di codice, mezza giornata di lavoro o il completamento di una sottofunzione.

  • Reimpostare l'RDE se è stato utilizzato da un'altra feature e si desidera ripristina lo stato predefinito. L’operazione di ripristino richiede alcuni minuti e tutto il contenuto e il codice esistenti viene eliminato. È possibile utilizzare il comando RDE status per confermare che RDE è pronto. L’RDE viene fornito con la versione più recente dell’AEM.

    note important
    IMPORTANT
    Se gli ambienti di staging e produzione non ricevono aggiornamenti automatici della versione dell’AEM e sono in esecuzione rispetto alla versione più recente della versione dell’AEM, il codice in esecuzione sull’RDE potrebbe non corrispondere al funzionamento del codice nell’ambiente di staging e produzione. In questo caso, è particolarmente importante eseguire un test approfondito del codice sulla gestione temporanea prima di distribuirlo alla produzione.
  • Utilizzando l'interfaccia della riga di comando RDE, sincronizzare il codice locale con RDE. Le opzioni includono l’installazione di un pacchetto di contenuti, un bundle specifico, un file di configurazione OSGI, un file di contenuti e un file zip di una configurazione Apache/Dispatcher. È inoltre possibile fare riferimento a un pacchetto di contenuti remoto. Consulta Strumenti della riga di comando RDE per ulteriori informazioni. È possibile utilizzare il comando di stato per verificare che la distribuzione sia stata eseguita correttamente. Facoltativamente, utilizza Gestione pacchetti per installare i pacchetti di contenuti.

  • Verifica il codice nell’RDE. Gli URL Author e Publish sono disponibili in Cloud Manager.

  • Se il codice non si comporta come previsto, utilizza tecniche di debug standard per comprendere il problema e apportare le modifiche appropriate. Senza eseguire il commit delle modifiche del codice in Git (poiché non sono state convalidate), utilizza la CLI locale per sincronizzare il codice in RDE. Continua a ripetere l’iterazione fino a quando il problema non viene risolto.

  • Una volta che il codice si comporta come previsto, esegui il commit del codice nel ramo della funzione Git.

  • Il codice sincronizzato con RDE non utilizza una pipeline di Cloud Manager, pertanto ora devi utilizzare una pipeline non di produzione di Cloud Manager per distribuire il ramo della funzione Git nell’ambiente di sviluppo Cloud. In questo modo, potrai verificare che il codice superi i gate di qualità di Cloud Manager e verificare che sia stato successivamente distribuito correttamente tramite la pipeline di produzione di Cloud Manager.

  • Ripeti i passaggi precedenti per ogni fase cardine intermedia fino a quando tutto il codice per la funzione non è pronto ed è eseguito correttamente sia nell’ambiente RDE che in quello di sviluppo cloud.

  • Distribuisci il codice nell’ambiente di produzione tramite la pipeline di produzione di Cloud Manager.

Utilizzo di RDE per eseguire il debug di una feature esistente use-rde-to-debug-an-existing-feature

Il flusso di lavoro è simile allo sviluppo di una nuova funzione. La differenza è che il codice da sincronizzare in RDE rifletterebbe l’etichetta Git di qualsiasi elemento inviato all’ambiente in cui è stato trovato il problema. Inoltre, può essere utile distribuire contenuti corrispondenti all’ambiente a monte. Ciò può essere ottenuto esportando e importando pacchetti di contenuti.

Più sviluppatori che collaborano allo stesso RDE multiple-developers-collaborating-on-the-same-rde

Un RDE supporta un singolo progetto alla volta. Poiché il codice viene sincronizzato da un ambiente di sviluppo locale all’ambiente RDE, è più naturale per uno sviluppatore utilizzarlo da solo in un determinato momento.

Tuttavia, con un’attenta coordinazione, è possibile per più sviluppatori convalidare una funzione specifica o eseguire il debug di un problema specifico. La chiave è che ogni sviluppatore mantiene sincronizzati i propri progetti locali in modo che le modifiche al codice apportate da un particolare sviluppatore siano assorbite dagli altri sviluppatori, altrimenti uno sviluppatore potrebbe inavvertitamente sovrascrivere il codice dell'altro. La strategia consigliata è che ogni sviluppatore esegua il commit delle modifiche in un ramo Git condiviso prima di eseguire la sincronizzazione con l’RDE, in modo che gli altri sviluppatori richiamino le modifiche prima di apportare le proprie.

Comandi Strumenti riga di comando RDE rde-cli-commands

Guida/Informazioni generali help

  • Per un elenco di comandi, digitare:

    aio aem:rde

  • Per informazioni dettagliate su un comando, digitare:

    aio aem rde <command> --help

Flag globali global-flags

NOTE
Questi flag globali non sono ancora disponibili. Verranno implementati a partire da giugno.
  • Per un output meno dettagliato, utilizza il flag di silenziosità:

    aio aem rde <command> --quiet

    In questo modo vengono rimossi alcuni elementi, ad esempio i cursori e le barre di avanzamento, e viene limitata la necessità di input da parte dell'utente.

  • Per l’output JSON invece dell’output del registro della console, utilizza il flag json:

    aio aem rde <command> --json

    Questo restituisce un JSON valido durante la soppressione di qualsiasi output della console. Vedi gli esempi JSON più avanti.

  • Per evitare di configurare le informazioni di connessione RDE utilizzando il comando setup o qualsiasi creazione di configurazione aio, utilizzare i tre flag per l'organizzazione, il programma e l'ambiente:

    aio aem rde <command> --organizationId=<value> --programId=<value> --environmentId=<value>

    Questo richiede ancora un aio login da eseguire.

Implementazione in RDE deploying-to-rde

In questa sezione viene descritto l’utilizzo di RDE CLI per la distribuzione, l’installazione o l’aggiornamento di bundle, configurazioni OSGI, pacchetti di contenuti, singoli file di contenuti e configurazioni Apache o Dispatcher.

Il modello di utilizzo generale è aio aem:rde:install <artifact>.

Di seguito sono riportati alcuni esempi:

Distribuzione di un pacchetto di contenuti

aio aem:rde:install sample.demo.ui.apps.all-1.0.0-SNAPSHOT.zip

La risposta per una distribuzione corretta è simile alla seguente:

...
#1: deploy completed for content-package sample.demo.ui.apps.all-1.0.0-SNAPSHOT.zip on author,publish - done by 9E072FC75D54FE1A2B49431C@AdobeID at 2022-09-13T11:32:06.229Z

Facoltativamente, puoi fare riferimento a un archivio remoto:

aio aem:rde:install -t content-package "https://repo1.maven.org/maven2/com/adobe/aem/guides/aem-guides-wknd.all/2.1.0/aem-guides-wknd.all-2.1.0.zip"

Per impostazione predefinita, gli artefatti vengono distribuiti sia sul livello di authoring che su quello di pubblicazione, ma il flag "-s" può essere utilizzato per individuare un livello specifico.

Qualsiasi pacchetto AEM può essere distribuito, ad esempio pacchetti con codice, contenuto o un pacchetto contenitore (chiamato anche pacchetto "all").

IMPORTANT
La configurazione del Dispatcher per il progetto WKND non viene distribuita tramite l’installazione del pacchetto di contenuti di cui sopra. Distribuiscilo separatamente seguendo i passaggi "Distribuzione di una configurazione Apache/Dispatcher".

Distribuzione di una configurazione OSGI

aio aem:rde:install com.adobe.granite.demo.MyServlet.cfg.json

In cui la risposta per una distribuzione corretta è simile alla seguente:

...
#2: deploy completed for osgi-config com.adobe.granite.demo.MyServlet.cfg.json on author,publish - done by 9E0725C05D54FE1A0B49431C@AdobeID at 2022-09-13T11:54:36.390Z

Distribuzione di un bundle

Per distribuire un bundle, utilizza:

aio aem:rde:install ~/.m2/repository/org/apache/felix/org.apache.felix.gogo.jline/1.1.8/org.apache.felix.gogo.jline-1.1.8.jar

In cui la risposta per una distribuzione corretta è simile alla seguente:

...
#3: deploy staged for osgi-bundle org.apache.felix.gogo.jline-1.1.8.jar on author,publish - done by 9E0725C05D53BE1A0B49431C@AdobeID at 2022-09-14T07:54:28.882Z

Distribuzione di un file di contenuto

Per distribuire un file di contenuto, utilizza:

aio aem:rde:install world.txt -p /apps/hello.txt

In cui la risposta per una distribuzione corretta è simile alla seguente:

..
#4: deploy completed for content-file world.txt on author,publish - done by 9E0729C05C54FE1A0B49431C@AdobeID at 2022-09-14T07:49:30.644Z

Distribuzione di una configurazione di Apache/Dispatcher

Per questo tipo di configurazione, l’intera struttura di cartelle deve essere sotto forma di un file zip.

Dalla sezione dispatcher di un progetto AEM, puoi comprimere la configurazione Dispatcher eseguendo il seguente comando maven:

mvn clean package

Oppure utilizzando il comando zip seguente da src directory del dispatcher modulo:

zip -y -r dispatcher.zip .

Quindi distribuisci la configurazione con questo comando:

aio aem:rde:install target/aem-guides-wknd.dispatcher.cloud-X.X.X-SNAPSHOT.zip

TIP
Il comando precedente presuppone che tu stia distribuendo WKND configurazioni del Dispatcher del progetto. Assicurati di sostituire il X.X.X con il numero di versione del progetto WKND corrispondente o il numero di versione specifico del progetto quando distribuisci la configurazione di Dispatcher del progetto.
NOTE
RDE supporta la configurazione del Dispatcher in "modalità flessibile", ma non in "modalità legacy". Consulta Documentazione di Dispatcher per informazioni sulle due modalità. È inoltre possibile consultare la documentazione su migrazione in modalità flessibile, se non lo hai già fatto.

Una distribuzione corretta genera una risposta simile alla seguente:

..
#5 deploy completed for dispatcher-config dispatcher.zip on author,publish - done by 9E0735C05T54FE1A0B49431C@AdobeID at 2022-10-03T10:26:31.286Z
Logs:
  Cloud manager validator 2.0.49
  2022/10/03 10:26:37 No issues found
  Syntax OK

Il codice distribuito in RDE non viene sottoposto a una pipeline di Cloud Manager e ai relativi gate di qualità associati. Tuttavia, il codice viene sottoposto ad alcune analisi che segnalano gli errori, come illustrato nell’esempio di codice seguente:

$ aio aem:rde:install ~/.m2/repository/org/apache/felix/org.apache.felix.gogo.jline/1.1.8/org.apache.felix.gogo.jline-1.1.8.jar
...
#19: deploy staged for osgi-bundle org.apache.felix.gogo.jline-1.1.8.jar on author,publish - done by 9E0725C05D74FR1A0B49431C@AdobeID at 2022-09-14T07:54:28.882Z
Logs:
The analyser found the following errors for author :
[requirements-capabilities] com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8: Artifact com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8 requires [org.apache.felix.gogo.jline/1.1.8] org.apache.felix.gogo; filter:="(&(org.apache.felix.gogo=command.implementation)(version>=1.0.0)(!(version>=2.0.0)))"; effective:=active in start level 20 but no artifact is providing a matching capability in this start level.
[api-regions-exportsimports] com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8: Bundle org.apache.felix.gogo.jline:1.1.8 is importing package(s) [org.jline.builtins, org.jline.utils, org.apache.felix.service.command, org.apache.felix.service.threadio, org.jline.terminal, org.jline.reader, org.apache.felix.gogo.runtime, org.jline.reader.impl] in start level 20 but no bundle is exporting these for that start level.
The analyser found the following errors for publish :
[requirements-capabilities] com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8: Artifact com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8 requires [org.apache.felix.gogo.jline/1.1.8] org.apache.felix.gogo; filter:="(&(org.apache.felix.gogo=command.implementation)(version>=1.0.0)(!(version>=2.0.0)))"; effective:=active in start level 20 but no artifact is providing a matching capability in this start level.
[api-regions-exportsimports] com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8: Bundle org.apache.felix.gogo.jline:1.1.8 is importing package(s) [org.jline.builtins, org.jline.utils, org.apache.felix.service.command, org.apache.felix.service.threadio, org.jline.terminal, org.jline.reader, org.apache.felix.gogo.runtime, org.jline.reader.impl] in start level 20 but no bundle is exporting these for that start level.

L’esempio di codice riportato sopra illustra il comportamento se un bundle non si risolve. In questo caso, è "staging" e viene installato solo se i suoi requisiti (importazioni mancanti, in questo caso) sono soddisfatti tramite l'installazione di un altro codice.

Distribuzione di codice front-end basato su temi e modelli del sito deploying-themes-to-rde

NOTE
Questa funzione non è ancora disponibile. Verrà introdotto a giugno.

Gli RDE supportano il codice front-end basato su temi del sito e modelli di sito. Con gli RDE, questa operazione viene eseguita utilizzando una direttiva della riga di comando per distribuire pacchetti front-end, anziché Cloud Manager Pipeline front-end utilizzato per altri tipi di ambiente.

Come sempre, crea il pacchetto front-end utilizzando npm:

npm run build

Dovrebbe generare un dist/ cartella, in modo che la cartella del pacchetto front-end contenga package.json file e dist cartella:

ls ./path-to-frontend-pkg-folder/
...
dist
package.json

Ora puoi distribuire il pacchetto front-end nell’RDE puntando alla cartella del pacchetto front-end:

aio aem:rde:install -t frontend ./path-to-frontend-pkg-folder/
...
#1: deploy completed for frontend frontend-pipeline.zip on author,publish - done by ... at 2024-01-18T15:33:22.898Z
Logs:
> Deployed artifact wknd-1.0.0-1705592008-26e7ec1a
> with workspace hash 692021864642a20d6d298044a927d66c0d9cf2adf42d4cca0c800a378ac3f8d3

In alternativa, è possibile comprimere il package.json file e dist cartella e distribuisci il file zip:

zip -r frontend-pkg.zip ./path-to-frontend-pkg-folder/dist ./path-to-frontend-pkg-folder/package.json

aio aem:rde:install -t frontend frontend-pkg.zip
...
#1: deploy completed for frontend frontend-pipeline.zip on author,publish - done by ... at 2024-01-18T15:33:22.898Z
Logs:
> Deployed artifact wknd-1.0.0-1705592008-26e7ec1a
> with workspace hash 692021864642a20d6d298044a927d66c0d9cf2adf42d4cca0c800a378ac3f8d3
NOTE
La denominazione dei file nel pacchetto front-end deve rispettare le seguenti convenzioni di denominazione:
  • cartella "dist", per la cartella del pacchetto di output npm build
  • file "package.json", per il pacchetto dipendenze npm

Controllo dello stato della RDE checking-rde-status

È possibile utilizzare RDE CLI per verificare se l’ambiente è pronto per essere distribuito in, in quanto tramite il plug-in RDE sono state effettuate delle distribuzioni.

In esecuzione:

aio aem:rde:status

Restituisce quanto segue:

Info for cm-p12345-e987654
Environment: Ready
- Bundles Author:
 com.adobe.granite.sample.demo-1.0.0.SNAPSHOT
- Bundles Publish:
 com.adobe.granite.sample.demo-1.0.0.SNAPSHOT
- Configurations Author:
 com.adobe.granite.demo.MyServlet
- Configurations Publish:
 com.adobe.granite.demo.MyServlet

Se il comando restituisce una nota sulla distribuzione delle istanze, è comunque possibile procedere ed eseguire l'aggiornamento successivo, ma l'ultimo potrebbe non essere ancora visibile nell'istanza.

Mostra cronologia distribuzione show-deployment-history

Puoi controllare la cronologia delle distribuzioni effettuate nell’RDE eseguendo:

aio aem:rde:history

Che restituisce una risposta sotto forma di:

#1: deploy completed for content-package aem-guides-wknd.all-2.1.0.zip on author,publish - done by 029039A55D4DE16A0A494025@AdobeID at 2022-09-12T14:41:55.393Z

Eliminazione da RDE deleting-from-rde

È possibile eliminare configurazioni e bundle distribuiti in precedenza in RDE tramite gli strumenti CLI. Utilizza il status per un elenco di elementi che possono essere eliminati, che include bsn per i bundle e pid per le configurazioni a cui fare riferimento nel comando delete.

Ad esempio, se com.adobe.granite.demo.MyServlet.cfg.json è stato installato, il bsn è solo com.adobe.granite.demo.MyServlet, senza cfg.json suffisso.

L'eliminazione di pacchetti di contenuti o file di contenuti non è supportata. Per rimuoverli, è necessario reimpostare l'RDE, che lo riporta allo stato predefinito.

Per ulteriori informazioni, consulta l’esempio seguente:

aio aem:rde:delete com.adobe.granite.csrf.impl.CSRFFilter
#13: delete completed for osgi-config com.adobe.granite.csrf.impl.CSRFFilter on author - done by karl at 2022-09-12T22:01:01.955Z
#14: delete completed for osgi-config com.adobe.granite.csrf.impl.CSRFFilter on publish - done by karl at 2022-09-12T22:01:12.979Z

Per ulteriori informazioni e dimostrazioni, consulta il video tutorial come utilizzare i comandi RDE (10:01).

Registri rde-logging

NOTE
Questa funzione non è ancora disponibile. Verrà introdotto a giugno.

Analogamente ad altri tipi di ambiente, i livelli di registro possono essere impostati modificando le configurazioni OSGi. Tuttavia, come descritto in precedenza, il modello di distribuzione per gli RDE prevede una riga di comando anziché una distribuzione di Cloud Manager. Controlla la documentazione di registrazione per ulteriori informazioni su come visualizzare, scaricare e interpretare i registri.

RDE CLI dispone inoltre di un proprio comando log che può essere utilizzato per configurare rapidamente le classi e i pacchetti da registrare e a quale livello di log. Queste configurazioni possono essere visualizzate come temporanee, in quanto non modificano le proprietà OSGI nel controllo della versione. Questa funzione si concentra sulla suddivisione dei registri in tempo reale, anziché cercare registri di un passato remoto.

L’esempio seguente illustra come visualizzare il livello di authoring, con un pacchetto impostato su un livello di registro di debug e due pacchetti (separati da spazi) impostati su un livello di debug di informazioni. Output che include un auth pacchetto è evidenziato.

aio aem:rde:logs --target=author --debug=org.apache.sling --info=org.apache.sling.commons.threads.impl org.apache.sling.jcr.resource.internal.helper.jcr -H .auth.

Consulta aio aem:rde:logs --help per l'insieme completo di opzioni della riga di comando.

Le funzioni includono:

  • dichiarazione dei livelli di registro per pacchetto o livello di classe
  • personalizzazione del formato di output del registro
  • fino a quattro configurazioni di registro, ciascuna nel proprio terminale
  • evidenziazione di registri specifici

Si noti che i registri vengono memorizzati in memoria sull'RDE e che tali registri vengono riciclati e quindi eliminati se non sono in coda o se la rete è troppo lenta.

Ripristina reset-rde

Se si ripristina la RDE, verranno rimossi dalle istanze di authoring e di pubblicazione tutto il codice personalizzato, le configurazioni e il contenuto. Questo ripristino è utile, ad esempio, se l'RDE è stato utilizzato per testare una caratteristica specifica e si desidera ripristinarla allo stato predefinito in modo da poter testare una caratteristica diversa.

Una reimpostazione imposta l’RDE sulla versione AEM più recente disponibile.

Per ripristinare l’RDE, puoi utilizzare Cloud Manager seguendo i passaggi seguenti:

  1. Accedi a Cloud Manager all’indirizzo my.cloudmanager.adobe.com e seleziona l’organizzazione appropriata.

  2. Fare clic sul programma per il quale si desidera reimpostare l'RDE.

  3. Dalla pagina Panoramica, fai clic sulla scheda Ambienti nella parte superiore della schermata.

    Scheda Ambienti

    • In alternativa, per passare direttamente alla scheda Ambienti, fai clic sul pulsante Mostra tutto nella scheda Ambienti.

      Opzione Mostra tutto

  4. Il Ambienti Viene visualizzata una finestra in cui sono elencati tutti gli ambienti del programma.

    Scheda Ambienti

  5. Fare clic sul pulsante con i puntini di sospensione dell'RDE che si desidera reimpostare e quindi selezionare Reimposta.

    Visualizza dettagli ambiente

  6. Conferma di voler reimpostare la RDE facendo clic su Reimposta nella finestra di dialogo.

    Conferma reimpostazione

  7. Cloud Manager conferma, tramite una notifica tramite banner, l’avvio del processo di ripristino.

    Reimposta notifica banner

Una volta avviato il processo di ripristino RDE, in genere sono necessari alcuni minuti per completare e ripristinare lo stato predefinito dell’ambiente. Lo stato del processo di ripristino può essere visualizzato in qualsiasi momento nella Stato colonna del Ambienti o nella scheda Ambienti finestra.

Stato reimpostazione RDE

È inoltre possibile reimpostare l’RDE utilizzando il pulsante con i puntini di sospensione direttamente dal Ambienti scheda su Panoramica pagina.

Reimposta RDE dalla scheda Ambienti

Per ulteriori informazioni su come utilizzare Cloud Manager per gestire gli ambienti, consulta la documentazione di Cloud Manager.

Comandi che supportano l’output JSON json-commands

NOTE
Questi comandi non sono ancora disponibili. Verranno implementati a partire da giugno.

La maggior parte dei comandi supporta il --json flag che sopprime l’output della console e restituisce un json valido da elaborare negli script. Di seguito sono riportati alcuni comandi supportati, con esempi dell’output json.

Stato

Espandi per visualizzare gli esempi di stato

Un RDE pulito

$ aio aem rde status --json

code language-json
{
  "programId": "myProgram",
  "environmentId": "myEnv",
  "status": "Modification in progress | Deployment in progress | Upload in progress | Ready (instances are currently deploying) | Ready",
  "author": {
    "osgiBundles": [],
    "osgiConfigs": []
  },
  "publish": {
    "osgiBundles": [],
    "osgiConfigs": []
  }
}

RDE con alcuni bundle installati

$ aio aem rde status --json

code language-json
{
  "programId": "myProgram",
  "environmentId": "myEnv",
  "status": "Ready",
  "author": {
    "osgiBundles": [
      {
        "id": "author_osgi-bundle_com.adobe.granite.hotdev.demo",
        "updateId": "80",
        "service": "author",
        "type": "osgi-bundle",
        "metadata": {
          "name": "hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip",
          "bundleSymbolicName": "com.adobe.granite.hotdev.demo",
          "bundleName": "HotDev Bundle",
          "bundleVersion": "1.0.0.SNAPSHOT"
        }
      }
    ],
    "osgiConfigs": [
      {
        "id": "publish_osgi-config_com.adobe.granite.demo.MyServlet",
        "updateId": "80",
        "service": "publish",
        "type": "osgi-config",
        "metadata": {
          "name": "hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip",
          "configPid": "com.adobe.granite.demo.MyServlet"
        }
      }
    ]
  },
  "publish": {
    "osgiBundles": [
      {
        "id": "author_osgi-bundle_com.adobe.granite.hotdev.demo",
        "updateId": "80",
        "service": "author",
        "type": "osgi-bundle",
        "metadata": {
          "name": "hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip",
          "bundleSymbolicName": "com.adobe.granite.hotdev.demo",
          "bundleName": "HotDev Bundle",
          "bundleVersion": "1.0.0.SNAPSHOT"
        }
      }
    ],
    "osgiConfigs": [
      {
        "id": "publish_osgi-config_com.adobe.granite.demo.MyServlet",
        "updateId": "80",
        "service": "publish",
        "type": "osgi-config",
        "metadata": {
          "name": "hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip",
          "configPid": "com.adobe.granite.demo.MyServlet"
        }
      }
    ]
  }
}

Installa

Espandi per visualizzare gli esempi di installazione

$ aio aem rde install ~/Downloads/hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip --json

code language-json
{
  "programId": "myProgram",
  "environmentId": "myEnv",
  "items": [
    {
      "updateId": "4",
      "info": "deploy",
      "action": "deploy",
      "metadata": {
        "name": "hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip"
      },
      "services": [
        "author",
        "publish"
      ],
      "status": "completed",
      "timestamps": {
        "received": "2024-05-21T12:30:44.578Z",
        "processed": "2024-05-21T12:31:07.886468Z"
      },
      "user": "userId",
      "type": "content-package",
      "hash": "2ad73507",
      "logs": [
        "No logs available for this update."
      ]
    }
  ]
}

Eliminare

Espandi per visualizzare gli esempi di eliminazione

$ aio aem rde delete com.adobe.granite.hotdev.demo-1.0.0.SNAPSHOT --json

code language-json
{
  "programId": "myProgram",
  "environmentId": "myEnv",
  "items": [
    {
      "updateId": "84",
      "info": "delete author_osgi-bundle_com.adobe.granite.hotdev.demo",
      "action": "delete",
      "metadata": {},
      "services": [
        "author"
      ],
      "status": "completed",
      "timestamps": {
        "received": "2024-05-21T11:49:16.889Z",
        "processed": "2024-05-21T11:49:18.188420Z"
      },
      "user": "userId",
      "type": "osgi-bundle",
      "deletedArtifact": {
        "id": "author_osgi-bundle_com.adobe.granite.hotdev.demo",
        "metadata": {
          "name": "hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip",
          "bundleSymbolicName": "com.adobe.granite.hotdev.demo",
          "bundleName": "HotDev Bundle",
          "bundleVersion": "1.0.0.SNAPSHOT"
        },
        "service": "author",
        "type": "osgi-bundle",
        "updateId": "83"
      },
      "hash": "636f6d2e",
      "logs": [
        "No logs available for this update."
      ]
    },
    {
      "updateId": "85",
      "info": "delete publish_osgi-bundle_com.adobe.granite.hotdev.demo",
      "action": "delete",
      "metadata": {},
      "services": [
        "publish"
      ],
      "status": "completed",
      "timestamps": {
        "received": "2024-05-21T11:49:23.857Z",
        "processed": "2024-05-21T11:49:25.237930Z"
      },
      "user": "userId",
      "type": "osgi-bundle",
      "deletedArtifact": {
        "id": "publish_osgi-bundle_com.adobe.granite.hotdev.demo",
        "metadata": {
          "name": "hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip",
          "bundleSymbolicName": "com.adobe.granite.hotdev.demo",
          "bundleName": "HotDev Bundle",
          "bundleVersion": "1.0.0.SNAPSHOT"
        },
        "service": "publish",
        "type": "osgi-bundle",
        "updateId": "83"
      },
      "hash": "636f6d2e",
      "logs": [
        "No logs available for this update."
      ]
    }
  ]
}

Cronologia

Espandi per visualizzare esempi di cronologia

$ aio aem rde history --json

code language-json
{
  "programId": "myProgram",
  "environmentId": "myEnv",
  "status": "Ready",
  "items": [
    {
      "updateId": "112",
      "info": "delete publish_osgi-bundle_com.adobe.granite.hotdev.demo",
      "action": "delete",
      "metadata": {},
      "services": [
        "publish"
      ],
      "status": "completed",
      "timestamps": {
        "received": "2024-05-21T12:53:07.934Z",
        "processed": "2024-05-21T12:53:09.118766Z"
      },
      "user": "userId",
      "type": "osgi-bundle",
      "deletedArtifact": {
        "id": "publish_osgi-bundle_com.adobe.granite.hotdev.demo",
        "metadata": {
          "name": "hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip",
          "bundleSymbolicName": "com.adobe.granite.hotdev.demo",
          "bundleName": "HotDev Bundle",
          "bundleVersion": "1.0.0.SNAPSHOT"
        },
        "service": "publish",
        "type": "osgi-bundle",
        "updateId": "110"
      },
      "hash": "636f6d2e"
    },
    {
      "updateId": "111",
      "info": "delete author_osgi-bundle_com.adobe.granite.hotdev.demo",
      "action": "delete",
      "metadata": {},
      "services": [
        "author"
      ],
      "status": "completed",
      "timestamps": {
        "received": "2024-05-21T12:53:00.824Z",
        "processed": "2024-05-21T12:53:02.101560Z"
      },
      "user": "userId",
      "type": "osgi-bundle",
      "deletedArtifact": {
        "id": "author_osgi-bundle_com.adobe.granite.hotdev.demo",
        "metadata": {
          "name": "hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip",
          "bundleSymbolicName": "com.adobe.granite.hotdev.demo",
          "bundleName": "HotDev Bundle",
          "bundleVersion": "1.0.0.SNAPSHOT"
        },
        "service": "author",
        "type": "osgi-bundle",
        "updateId": "110"
      },
      "hash": "636f6d2e"
    },
    {
      "updateId": "110",
      "info": "deploy",
      "action": "deploy",
      "metadata": {
        "name": "hotdev.demo.ui.apps.all-1.0.0-SNAPSHOT.zip"
      },
      "services": [
        "author",
        "publish"
      ],
      "status": "completed",
      "timestamps": {
        "received": "2024-05-21T12:52:12.123Z",
        "processed": "2024-05-21T12:52:31.026147Z"
      },
      "user": "userId",
      "type": "content-package",
      "hash": "2ad73507"
    }
  ]
}

Ripristina

Espandi per visualizzare gli esempi di ripristino

Fire and Forget, senza aspettare

$ aio aem rde reset --no-wait --json

code language-json
{
  "programId": "myProgram",
  "environmentId": "myEnv",
  "status": "resetting"
}

Attendere il completamento

$ aio aem rde reset --json

code language-json
{
  "programId": "myProgram",
  "environmentId": "myEnv",
  "status": "reset"
}

Riavvia

Espandi per visualizzare gli esempi di riavvio

$ aio aem rde restart --json

code language-json
{
  "programId": "myProgram",
  "environmentId": "myEnv",
  "status": "restarted"
}

Modalità di esecuzione runmodes

La configurazione OSGI specifica per RDE può essere applicata utilizzando i suffissi sul nome della cartella, come negli esempi seguenti:

  • config.rde
  • config.author.rde
  • config.publish.rde

Consulta la documentazione della modalità di esecuzione per informazioni generali sulle modalità di esecuzione.

NOTE
La configurazione OSGI RDE è univoca in quanto eredita i valori di tutte le proprietà OSGI dichiarate dal pacchetto dev modalità di esecuzione.

Gli RDE sono distinti da altri ambienti in quanto il contenuto può essere installato in una cartella install.rde (o install.author.rde o install.publish.rde) in /apps. Questo consente di eseguire il commit del contenuto in Git e distribuirlo all’RDE utilizzando gli strumenti della riga di comando.

Popolamento con il contenuto populating-content

Quando un RDE viene reimpostato, tutto il contenuto viene rimosso e quindi, se desiderato, è necessario eseguire un’azione esplicita per aggiungere contenuto. Come best practice, è consigliabile assemblare un set di contenuti da utilizzare come contenuti di prova per convalidare o eseguire il debug delle funzioni nell’RDE. Esistono diverse strategie possibili per popolare l’RDE con tale contenuto:

  1. Sincronizzare esplicitamente il pacchetto di contenuti con l'RDE utilizzando gli strumenti della riga di comando

  2. Inserisci e conferma il contenuto di esempio in Git all’interno di una cartella install.rde in /apps, quindi sincronizza il pacchetto di contenuti generali con RDE utilizzando gli strumenti della riga di comando.

  3. Utilizza il strumento copia contenuto per copiare un set di contenuti definito da ambienti di produzione, stage o sviluppo o da un altro RDE.

  4. Utilizzare Gestione pacchetti

Il limite è di 1 GB per la sincronizzazione dei pacchetti di contenuti.

Quali sono le differenze tra gli RDE e gli ambienti di sviluppo cloud? how-are-rds-different-from-cloud-development-environments

Sebbene l’RDE sia simile per molti aspetti a un ambiente di sviluppo cloud, esistono alcune lievi differenze a livello di architettura per consentire una rapida sincronizzazione del codice. Il meccanismo per ottenere il codice da RDE è diverso: per gli RDE, si sincronizza il codice da un ambiente di sviluppo locale, mentre per gli ambienti di sviluppo cloud, si distribuisce il codice tramite Cloud Manager.

Per questi motivi, dopo aver convalidato il codice in un ambiente RDE, è consigliabile distribuirlo in un ambiente di sviluppo cloud utilizzando la pipeline non di produzione. Infine, verifica il codice prima di distribuirlo con la pipeline di produzione.

Inoltre, tieni presente le seguenti considerazioni:

  • Gli RDE non includono un livello di anteprima
  • Attualmente gli RDE non supportano il canale prerelease.

Di quante RDE ho bisogno? how-many-rds-do-i-need

È disponibile un RDE per ogni soluzione concessa in licenza e l’Adobe offre anche RDE aggiuntivi, che possono essere concessi in licenza per programmi di produzione (non sandbox).

Il numero di RDE necessari dipende dalla composizione e dai processi di un’organizzazione. Il modello più flessibile è quello in cui un’organizzazione acquista un RDE dedicato per ciascuno dei propri sviluppatori AEM Cloud Service. In questo modello, ogni sviluppatore può testare il proprio codice sull’RDE senza coordinarsi con gli altri membri del gruppo per determinare se è disponibile un ambiente RDE.

All’estremo opposto, un team con un singolo RDE può utilizzare processi interni per coordinare quali sviluppatori possono utilizzare l’ambiente in un dato momento. Questo può accadere quando uno sviluppatore ha raggiunto una fase cardine della funzione intermedia ed è pronto per la convalida in un ambiente Cloud in cui può apportare rapidamente le modifiche necessarie.

Un modello intermedio è un modello in cui un’organizzazione acquista diversi RDE, pertanto vi è una maggiore probabilità che sia disponibile un RDE inutilizzato. Una strategia potrebbe essere quella di allocare un RDE per team di scrum o per una funzione importante. I processi interni possono essere utilizzati per coordinare l’utilizzo degli ambienti.

Quali sono le differenze tra AEM Forms Cloud Service Rapid Development Environment (RDE) e altri ambienti? how-are-forms-rds-different-from-cloud-development-environments

Gli sviluppatori Forms possono utilizzare AEM Forms Cloud Service Rapid Development Environment per sviluppare rapidamente Forms adattivo, flussi di lavoro e personalizzazioni quali la personalizzazione di componenti core, integrazioni con sistemi di terze parti e altro ancora. AEM Forms Cloud Service Rapid Development Environment (RDE) non supporta le API di comunicazione. Inoltre, non supporta funzioni e funzionalità che richiedono documenti di record, come la generazione di un documento di record all’invio di un modulo adattivo. Le seguenti funzioni di AEM Forms non sono disponibili in un ambiente di sviluppo rapido (RDE):

  • Configurazione di un documento record per un modulo adattivo
  • Generazione di un documento record all’invio di un modulo adattivo o con un passaggio del flusso di lavoro
  • Inviare un documento record come allegato con l’azione Invia e-mail o con il passaggio E-mail in un flusso di lavoro
  • Utilizzo di Adobe Sign in un modulo adattivo o in un passaggio del flusso di lavoro
  • API di comunicazione
NOTE
Non c’è differenza tra l’interfaccia utente di Rapid Development Environment (RDE) e altri ambienti di Cloud Service per Forms. Tutte le opzioni relative al documento record, come la selezione di un modello di documento record per un modulo adattivo, continuano a essere visualizzate nell’interfaccia utente. Questi ambienti non dispongono di API di comunicazione e funzionalità per documenti di record per testare tali opzioni. Pertanto, quando scegli un’opzione che richiede API di comunicazione o funzionalità del documento di record, non viene eseguita alcuna azione e viene visualizzato un messaggio di errore.

Esercitazione RDE

Per informazioni sulle RDE in AEM as a Cloud Service, consulta l’esercitazione video che illustra come impostarla, come utilizzarla e il ciclo di vita dello sviluppo (01:25).

​# Risoluzione dei problemi

Plug-in aio RDE aio-rde-plugin

errori relativi ad autorizzazioni insufficienti

Per utilizzare il plug-in RDE, è necessario essere membri di Cloud Manager Sviluppatore - Cloud Service Profilo prodotto. Consulta questa pagina per ulteriori dettagli.

In alternativa, puoi confermare di disporre di questo ruolo di sviluppatore se puoi accedere alla console per sviluppatori eseguendo questo comando:

aio cloudmanager:environment:open-developer-console

TIP
Se vedi il Warning: cloudmanager:* is not a aio command. errore, è necessario installare aio-cli-plugin-cloudmanager eseguendo il comando seguente:
code language-none
aio plugins:install @adobe/aio-cli-plugin-cloudmanager

Verificare che l'accesso sia stato completato correttamente eseguendo

aio cloudmanager:list-programs

Questo dovrebbe elencare tutti i programmi nella tua organizzazione configurata e confermare che ti è stato assegnato il ruolo corretto.

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab