Compartir a través de


Compilación, prueba e implementación de una aplicación TypeScript y JavaScript

En esta guía se muestran los pasos para desarrollar una aplicación TypeScript y JavaScript dirigida a CCF, depurarla localmente e implementarla en un recurso CCF administrado en la nube.

Prerrequisitos

En esta guía se usa Visual Studio Code como IDE. Sin embargo, se puede usar cualquier IDE compatible con Node.js, JavaScript y el desarrollo de aplicaciones typeScript.

Preparación del proyecto

  1. Siga las instrucciones de la documentación de CCF para arrancar el proyecto y configurar la estructura de carpetas necesaria.

Desarrollo de la aplicación

  1. Desarrolle la aplicación TypeScript siguiendo la documentación aquí. Consulte la documentación del almacén de Key-Value CCF para obtener información sobre los estándares de nomenclatura y la semántica de transacciones que se van a usar en el código. Para obtener ejemplos y procedimientos recomendados, consulte las aplicaciones de ejemplo publicadas en GitHub.

Compilación de la agrupación de aplicaciones

  1. El formato nativo para las aplicaciones de JavaScript en CCF es una agrupación de aplicaciones de JavaScript o una agrupación de aplicaciones breves. Un paquete se puede envolver directamente en una propuesta de gobernanza para el despliegue. Siga las instrucciones de creación de una agrupación de aplicaciones en la documentación de CCF para crear un lote de aplicaciones y prepararse para la implementación.

  2. Compile la aplicación. La agrupación de aplicaciones se crea en la carpeta dist. La agrupación de aplicaciones se coloca en un archivo denominado 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

Registro

  1. CCF proporciona macros para agregar sus propias líneas a la salida del nodo. Siga las instrucciones disponibles en Agregar registro a una aplicación en la documentación de CCF.

Implementación de una red CCF de 1 nodo

  1. Ejecute el script /opt/ccf_virtual/bin/sandbox.sh para iniciar una red CCF de 1 nodo e implementar la agrupación de aplicaciones.
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. El certificado de miembro y la clave privada están disponibles en /workspace/sandbox_0. El registro de la aplicación está disponible en /workspace/sandbox_0/out.

Una imagen que muestra el archivo de salida donde se escriben el nodo CCF y los registros de la aplicación.

  1. En este momento, hemos creado una red CCF local con un miembro e implementado la aplicación. El punto de conexión de red es https://127.0.0.1:8000. El miembro puede participar en operaciones de gobernanza como actualizar la aplicación o agregar más miembros mediante el envío de una propuesta.
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. Descargue el certificado de servicio de la red.
curl -k https://127.0.0.1:8000/node/network | jq -r .service_certificate > service_certificate.pem

Actualización de la aplicación

  1. El desarrollo de aplicaciones es un proceso iterativo. Cuando se agregan nuevas características o se corrigen errores, la aplicación debe volver a implementarse en la red de 1 nodo que se puede realizar con una propuesta de set_js_app.

  2. Recompile la aplicación para crear un nuevo archivo set_js_app.json en la carpeta dist.

  3. Cree una propuesta para enviar la solicitud. Una vez aceptada la propuesta, la nueva aplicación se implementa en la red de 1 nodo.

Nota:

En una red local de 1 nodo, se acepta inmediatamente una propuesta después de enviarla. No es necesario enviar un voto para aceptar o rechazar la propuesta. La lógica detrás de esto se hace para que el proceso de desarrollo sea rápido. Sin embargo, esto es diferente de cómo funciona la gobernanza en Azure Managed CCF, donde los miembros deben enviar un voto para aceptar o rechazar una propuesta.

$ 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

Implementación de la aplicación en un recurso CCF administrado

El siguiente paso consiste en crear un recurso CCF administrado e implementar la aplicación siguiendo las instrucciones de implementación de una aplicación JavaScript.

Pasos siguientes