共用方式為


建置、測試及部署 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. 應用程式開發是反覆的程序。 新增新功能或修正錯誤時,必須將應用程式重新部署至 1 節點網路,才能使用 set_js_app 提案來完成。

  2. 重建應用程式,以在 dist 資料夾中建立新的 set_js_app.json 檔案。

  3. 建立提交應用程式的提案。 接受提案之後,新的應用程式會部署到 1 節點網路。

注意

在本機 1 節點網路上,提交提案後會立即接受。 不需要提交投票以接受或拒絕提案。 其背後的理由是加快開發流程。 不過,這與 Azure 受控 CCF 中的治理運作方式不同,其中成員必須提交投票以接受或拒絕提案。

$ 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 資源並部署應用程式。

下一步