Поделиться через


Создание, тестирование и развертывание приложения TypeScript и JavaScript

В этом руководстве показано, как разработать приложение TypeScript и JavaScript, предназначенные для CCF, отлаживать его локально и развертывать в управляемом ресурсе CCF в облаке.

Необходимые компоненты

В этом руководстве в качестве интегрированной среды разработки используется Visual Studio Code . Но любую интегрированную среду разработки с поддержкой Node.js, разработку приложений JavaScript и TypeScript можно использовать.

Настройка проекта

  1. Следуйте инструкциям в документации по CCF, чтобы загрузить проект и настроить необходимую структуру папок.

Разработка приложения

  1. Создайте приложение TypeScript, следуя документации здесь. Сведения о стандартах именования и семантике транзакций, используемых в коде, см. в документации по хранилищу ключей CCF. Примеры и рекомендации см. в примерах приложений , опубликованных на сайте GitHub.

Создание пакета приложений

  1. Собственный формат приложений JavaScript в CCF — это пакет приложений 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.

Развертывание сети CCF с 1 узлом

  1. Запустите скрипт /opt/ccf_virtual/bin/sandbox.sh, чтобы запустить сеть CCF 1 узла и развернуть пакет приложения.
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. Перестройте приложение, чтобы создать новый файл set_js_app.json в папке dist.

  3. Создайте предложение для отправки приложения. После принятия предложения новое приложение развертывается в сети 1 узла.

Примечание.

В локальной сети с 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

Следующим шагом является создание ресурса Управляемого CCF и развертывание приложения, выполнив инструкции по развертыванию приложения JavaScript.

Следующие шаги