Создание, тестирование и развертывание приложения TypeScript и JavaScript
В этом руководстве показано, как разработать приложение TypeScript и JavaScript, предназначенные для CCF, отлаживать его локально и развертывать в управляемом ресурсе CCF в облаке.
Необходимые компоненты
- Установка CCF
- Node.js
- npm
-
- Python 3+.
- Установите последнюю версию пакета Python для CCF.
В этом руководстве в качестве интегрированной среды разработки используется Visual Studio Code . Но любую интегрированную среду разработки с поддержкой Node.js, разработку приложений JavaScript и TypeScript можно использовать.
Настройка проекта
- Следуйте инструкциям в документации по CCF, чтобы загрузить проект и настроить необходимую структуру папок.
Разработка приложения
- Создайте приложение TypeScript, следуя документации здесь. Сведения о стандартах именования и семантике транзакций, используемых в коде, см. в документации по хранилищу ключей CCF. Примеры и рекомендации см. в примерах приложений , опубликованных на сайте GitHub.
Создание пакета приложений
Собственный формат приложений JavaScript в CCF — это пакет приложений JavaScript или короткий пакет приложений. Пакет можно упаковать непосредственно в предложение по управлению для развертывания. Следуйте инструкциям по созданию пакета приложений в документации по CCF, чтобы создать пакет приложений и подготовиться к развертыванию.
Соберите приложение. Пакет приложений создается в папке 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
Ведение журналов
- CCF предоставляет макросы для добавления собственных строк в выходные данные узла. Следуйте инструкциям, доступным при добавлении ведения журнала в приложение в документации по CCF.
Развертывание сети CCF с 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
- Сертификат-член и закрытый ключ доступны в /workspace/sandbox_0. Журнал приложений доступен по адресу /workspace/sandbox_0/out.
- На этом этапе мы создали локальную сеть 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
}
- Скачайте сертификат службы из сети.
curl -k https://127.0.0.1:8000/node/network | jq -r .service_certificate > service_certificate.pem
Обновление приложения
Разработка приложений — это итеративный процесс. При добавлении новых функций или исправлении ошибок приложение должно быть повторно развернуто в сети 1 узла, которая может быть выполнена с помощью предложения set_js_app.
Перестройте приложение, чтобы создать новый файл set_js_app.json в папке dist.
Создайте предложение для отправки приложения. После принятия предложения новое приложение развертывается в сети 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.