共用方式為


建置、測試及部署 TypeScript 和 JavaScript 應用程式

本指南說明開發以CCF為目標的 TypeScript 和 JavaScript 應用程式、在本機進行偵錯,並將其部署至雲端上的受控 CCF 資源的步驟。

先決條件

本指南使用 Visual Studio Code 作為 IDE。 但是,任何支援 Node.js、JavaScript 和 TypeScript 應用程式開發的 IDE 都可以使用。

專案設定

  1. 請遵循CCF檔中 的指示 來啟動項目並設定必要的資料夾結構。

開發應用程式

  1. 請遵循 這裡的文件來開發 TypeScript 應用程式。 請參閱 CCF Key-Value 存放區 檔,以瞭解程式代碼中要使用的命名標準和交易語意。 如需範例和最佳做法,請參閱 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。

顯示將 CCF 節點和應用程式記錄寫入其中之輸出檔案的圖片。

  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節點網路。

備註

在單節點的本機網路上,提交提案後會立即被接受。 不需要提交投票以接受或拒絕提案。 其背後的理由是加快開發過程。 不過,這與 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資源並部署應用程式。

後續步驟