次の方法で共有


TypeScript と JavaScript アプリケーションのビルド、テスト、デプロイ

このガイドでは、CCF を対象とする TypeScript および JavaScript アプリケーションを開発し、ローカルでデバッグし、クラウド上のマネージド CCF リソースにデプロイする手順について説明します。

前提条件

  • CCF のインストール
  • Node.js
  • npm
    • Python 3 以降。
    • 最新バージョンの CCF Python パッケージインストールします。

このガイドでは、IDE として Visual Studio Code を使用します。 ただし、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

Logging

  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. この時点で、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. アプリケーション開発は反復的なプロセスです。 新機能が追加された場合やバグが修正された場合は、set_js_app提案で実行できる 1 ノード ネットワークにアプリケーションを再デプロイする必要があります。

  2. アプリケーションをリビルドして、dist フォルダーに新しい set_js_app.json ファイルを作成します。

  3. アプリケーションを送信する提案を作成します。 提案が承認されると、新しいアプリケーションが 1 ノード ネットワークにデプロイされます。

Note

ローカルの 1 ノード ネットワークでは、送信後すぐに提案が受け入れられます。 提案を承諾または拒否するために投票を送信する必要はありません。 その背後にある根拠は、開発プロセスを迅速にするために行われます。 ただし、これは、メンバーが提案を承認または拒否するために投票を送信する必要がある Azure Managed 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 リソースを作成し、アプリケーションをデプロイします。

次のステップ