Condividi tramite


Compilare, testare e distribuire un'applicazione TypeScript e JavaScript

Questa guida illustra i passaggi per sviluppare un'applicazione TypeScript e JavaScript destinata a CCF, eseguirne il debug in locale e distribuirla in una risorsa CCF gestita nel cloud.

Prerequisiti

Questa guida usa Visual Studio Code come IDE. Tuttavia, è possibile usare qualsiasi IDE con supporto per lo sviluppo di applicazioni Node.js, JavaScript e TypeScript.

Configurazione del progetto

  1. Seguire le istruzioni nella documentazione CCF per avviare il progetto e configurare la struttura di cartelle richiesta.

Sviluppare l'applicazione

  1. Sviluppare l'applicazione TypeScript seguendo la documentazione qui. Per informazioni sugli standard di denominazione e sulla semantica delle transazioni da usare nel codice, vedere la documentazione dell'archivio chiavi-valore CCF. Per esempi e procedure consigliate, vedere le applicazioni di esempio pubblicate in GitHub.

Compilare il bundle dell'applicazione

  1. Il formato nativo per le applicazioni JavaScript in CCF è un bundle di applicazioni JavaScript o un bundle di app breve. È possibile eseguire il wrapping di un bundle direttamente in una proposta di governance per la distribuzione. Seguire le istruzioni riportate in Creare un bundle di applicazioni nella documentazione CCF per creare un bundle di app e prepararsi per la distribuzione.

  2. Compila l'applicazione. Il bundle dell'applicazione viene creato nella cartella dist. Il bundle dell'applicazione viene inserito in un file denominato set_js_app.json.

npm run build

> build
> del-cli -f dist/ && rollup --config && cp app.json dist/ && node build_bundle.js dist/


src/endpoints/all.ts → dist/src...
created dist/src in 1.3s
Writing bundle containing 8 modules to dist/bundle.json
ls -ltr dist
total 40
drwxr-xr-x 4 settiy settiy  4096 Sep 11 10:20 src
-rw-r--r-- 1 settiy settiy  3393 Sep 11 10:20 app.json
-rw-r--r-- 1 settiy settiy 16146 Sep 11 10:20 set_js_app.json
-rw-r--r-- 1 settiy settiy 16061 Sep 11 10:20 bundle.json

Registrazione

  1. CCF fornisce macro per aggiungere righe personalizzate all'output del nodo. Seguire le istruzioni disponibili in Aggiungere la registrazione a un'applicazione nella documentazione di CCF.

Distribuire una rete CCF a 1 nodo

  1. Eseguire lo script /opt/ccf_virtual/bin/sandbox.sh per avviare una rete CCF a 1 nodo e distribuire il bundle dell'applicazione.
sudo /opt/ccf_virtual/bin/sandbox.sh --js-app-bundle ~/ccf-app-samples/banking-app/dist/
Setting up Python environment...
Python environment successfully setup
[10:40:37.516] Virtual mode enabled
[10:40:37.517] Starting 1 CCF node...
[10:40:41.488] Started CCF network with the following nodes:
[10:40:41.488]   Node [0] = https://127.0.0.1:8000
[10:40:41.489] You can now issue business transactions to the libjs_generic application
[10:40:41.489] Loaded JS application: /home/demouser/ccf-app-samples/banking-app/dist/
[10:40:41.489] Keys and certificates have been copied to the common folder: /home/demouser/ccf-app-samples/banking-app/workspace/sandbox_common
[10:40:41.489] See https://microsoft.github.io/CCF/main/use_apps/issue_commands.html for more information
[10:40:41.490] Press Ctrl+C to shutdown the network
  1. Il certificato membro e la chiave privata sono disponibili in /workspace/sandbox_0. Il log applicazioni è disponibile in /workspace/sandbox_0/out.

A picture showing the out file where the CCF node and application logs are written to.

  1. A questo punto, è stata creata una rete CCF locale con un membro e l'applicazione è stata distribuita. L'endpoint di rete è https://127.0.0.1:8000. Il membro può partecipare a operazioni di governance come l'aggiornamento dell'applicazione o l'aggiunta di altri membri inviando una proposta.
curl -k --silent https://127.0.0.1:8000/node/version | jq
{
  "ccf_version": "ccf-4.0.7",
  "quickjs_version": "2021-03-27",
  "unsafe": false
}
  1. Scaricare il certificato del servizio dalla rete.
curl -k https://127.0.0.1:8000/node/network | jq -r .service_certificate > service_certificate.pem

Aggiornare l'applicazione

  1. Lo sviluppo di applicazioni è un processo iterativo. Quando vengono aggiunte nuove funzionalità o sono stati corretti bug, è necessario ridistribuire l'applicazione alla rete a 1 nodo che può essere eseguita con una proposta di set_js_app.

  2. Ricompilare l'applicazione per creare un nuovo file set_js_app.json nella cartella dist.

  3. Creare una proposta per inviare l'applicazione. Dopo aver accettato la proposta, la nuova applicazione viene distribuita nella rete a 1 nodo.

Nota

In una rete locale a 1 nodo, una proposta viene accettata immediatamente dopo l'invio. Non è necessario inviare un voto per accettare o rifiutare la proposta. La logica alla base è fatta per rendere rapido il processo di sviluppo. Tuttavia, questo è diverso dal funzionamento della governance in CCF gestito di Azure in cui i membri devono inviare un voto per accettare o rifiutare una proposta.

$ ccf_cose_sign1 --content dist/set_js_app.json --signing-cert workspace/sandbox_common/member0_cert.pem --signing-key workspace/sandbox_common/member0_privk.pem --ccf-gov-msg-type proposal --ccf-gov-msg-created_at `date -Is` | curl https://127.0.0.1:8000/gov/proposals -H 'Content-Type: application/cose' --data-binary @- --cacert service_cert.pem

Distribuire l'applicazione in una risorsa CCF gestita

Il passaggio successivo consiste nel creare una risorsa CCF gestita e distribuire l'applicazione seguendo le istruzioni riportate in Distribuire un'applicazione JavaScript.

Passaggi successivi