共用方式為


建置、測試和部署 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. 應用程式開發是一個反覆的過程。 當添加新功能或修復錯誤時,必須將應用程序重新部署到 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 資源

下一個步驟是 建立受控 CCF 資源 ,並遵循 部署 JavaScript 應用程式中的指示來部署應用程式。

後續步驟