使用英语阅读

通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

生成、测试和部署 TypeScript 和 JavaScript 应用程序

本指南演示了开发面向 CCF 的 TypeScript 和 JavaScript 应用程序、在本地调试它并将其部署到云上的托管 CCF 资源的步骤。

先决条件

本指南使用 Visual Studio Code 作为 IDE。 但是,可以使用任何支持 Node.js、JavaScript 和 TypeScript 应用程序开发的 IDE。

项目设置

  1. 按照 CCF 文档中的说明启动项目并设置所需的文件夹结构。

开发应用程序

  1. 按照此处的文档开发 TypeScript 应用程序。 请参阅 CCF 键值存储文档,了解要在代码中使用的命名标准和事务语义。 有关示例和最佳做法,请参阅 GitHub 中发布的示例应用程序

生成应用程序捆绑包

  1. CCF 中 JavaScript 应用程序的本机格式是 JavaScript 应用程序捆绑包或短应用捆绑包。 可将捆绑包直接包装到用于部署的治理建议中。 按照 CCF 文档中创建应用程序捆绑包的说明创建应用捆绑包并准备部署。

  2. 构建应用程序。 应用程序捆绑包是在 dist 文件夹中创建的。 应用程序捆绑包放置在名为 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

日志记录

  1. CCF 提供宏,用于将自己的行添加到节点的输出中。 按照 CCF 文档中向应用程序添加日志记录时提供的说明进行操作。

部署 1 节点 CCF 网络

  1. 运行 /opt/ccf_virtual/bin/sandbox.sh 脚本以启动 1 节点 CCF 网络并部署应用程序捆绑包。
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. 成员证书和私钥在 /workspace/sandbox_0 上可用。 应用程序日志可在 /workspace/sandbox_0/out 中使用。

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

  1. 此时,我们创建了一个本地 CCF 网络,其中包含一个成员并部署了应用程序。 网络终结点为 https://127.0.0.1:8000. 该成员可以通过提交建议参与治理操作,例如更新应用程序或添加更多成员。
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. 从网络下载服务证书。
curl -k https://127.0.0.1:8000/node/network | jq -r .service_certificate > service_certificate.pem

更新应用程序

  1. 应用程序开发是一个迭代过程。 添加新功能或修复 bug 时,必须将应用程序重新部署到 1 节点网络,该网络可以使用set_js_app建议完成。

  2. 重新生成应用程序以在 dist 文件夹中创建新的 set_js_app.json 文件。

  3. 创建提交应用程序的建议。 接受建议后,新应用程序将部署到 1 节点网络。

备注

在本地 1 节点网络上,提交建议后立即接受。 无需提交投票以接受或拒绝该提案。 其背后的理由是加快开发过程。 但是,这与 Azure 托管 CCF 中的治理工作原理不同,成员(s)必须提交投票才能接受或拒绝建议。

$ 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

将应用程序部署到托管 CCF 资源

下一步是按照部署 JavaScript 应用程序的说明创建托管 CCF 资源并部署应用程序。

后续步骤