Partager via


Générer, tester et déployer une application TypeScript et JavaScript

Ce guide montre les étapes à suivre pour développer une application TypeScript et JavaScript ciblant CCF, la déboguer localement et la déployer sur une ressource CCF managée sur le cloud.

Prérequis

Ce guide utilise Visual Studio Code comme IDE. Toutefois, n’importe quel IDE avec prise en charge du développement d’applications Node.js, JavaScript et TypeScript peut être utilisé.

Configuration du projet

  1. Suivez les instructions de la documentation CCF pour démarrer le projet et configurer la structure de dossiers requise.

Développer l’application

  1. Développez l’application TypeScript en suivant la documentation ici. Reportez-vous à la documentation du magasin clé-valeur CCF pour en savoir plus sur les normes d’affectation de noms et la sémantique des transactions à utiliser dans le code. Pour obtenir des exemples et des bonnes pratiques, reportez-vous aux exemples d’applications publiées dans GitHub.

Générer le bundle d’applications

  1. Le format natif pour les applications JavaScript dans CCF est un ensemble d’applications JavaScript ou un ensemble d’applications court. Un bundle peut être inclus directement dans une proposition de gouvernance pour le déploiement. Suivez les instructions de création d’un bundle d’applications dans la documentation CCF pour créer un bundle d’applications et préparer le déploiement.

  2. Générez l’application. Le bundle d’applications est créé dans le dossier dist. Le bundle d’applications est placé dans un fichier nommé 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

Journalisation

  1. CCF fournit des macros pour ajouter vos propres lignes à la sortie du nœud. Suivez les instructions disponibles lors de l’ajout de la journalisation à une application dans la documentation CCF.

Déployer un réseau CCF à 1 nœud

  1. Exécutez le script /opt/ccf_virtual/bin/sandbox.sh pour démarrer un réseau CCF à 1 nœud et déployer le bundle d’applications.
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. Le certificat membre et la clé privée sont disponibles sur /workspace/sandbox_0. Le journal des applications est disponible dans /workspace/sandbox_0/out.

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

  1. À ce stade, nous avons créé un réseau CCF local avec un membre et déployé l’application. Le point de terminaison réseau est https://127.0.0.1:8000. Le membre peut participer à des opérations de gouvernance telles que la mise à jour de l’application ou l’ajout de membres en soumettant une proposition.
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. Téléchargez le certificat de service à partir du réseau.
curl -k https://127.0.0.1:8000/node/network | jq -r .service_certificate > service_certificate.pem

Mettre à jour l’application

  1. Le développement d’applications est un processus itératif. Lorsque de nouvelles fonctionnalités sont ajoutées ou que des bogues sont résolus, l’application doit être redéployée sur le réseau à 1 nœud, ce qui peut être effectué avec une proposition de set_js_app.

  2. Régénérez l’application pour créer un fichier set_js_app.json dans le dossier dist.

  3. Créez une proposition pour soumettre l’application. Une fois la proposition acceptée, la nouvelle application est déployée sur le réseau à 1 nœud.

Remarque

Sur un réseau local à 1 nœud, une proposition est immédiatement acceptée après son envoi. Il n’est pas nécessaire de soumettre un vote pour accepter ou rejeter la proposition. La raison d’être derrière elle est faite pour rendre le processus de développement rapide. Toutefois, cela diffère du fonctionnement de la gouvernance dans Azure Managed CCF où les membres doivent soumettre un vote pour accepter ou rejeter une proposition.

$ 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

Déployer l’application sur une ressource CCF managée

L’étape suivante consiste à créer une ressource CCF managée et à déployer l’application en suivant les instructions de déploiement d’une application JavaScript.

Étapes suivantes