TypeScript 및 JavaScript 애플리케이션 빌드, 테스트 및 배포
이 가이드에서는 CCF를 대상으로 하는 TypeScript 및 JavaScript 애플리케이션을 개발하고 로컬로 디버그하며 클라우드의 관리 CCF 리소스에 배포하는 단계를 보여줍니다.
필수 조건
- CCF 설치
- Node.JS
- npm
-
- Python 3+.
- CCF Python 패키지의 최신 버전을 설치합니다.
이 가이드에서는 Visual Studio Code를 IDE로 사용합니다. 그러나 Node.js, JavaScript 및 TypeScript 애플리케이션 개발을 지원하는 모든 IDE를 사용할 수 있습니다.
프로젝트 설정
- CCF 문서의 지침을 따라 프로젝트를 부트스트랩하고 필요한 폴더 구조를 설정합니다.
애플리케이션 개발
- 다음 문서를 따라 TypeScript 애플리케이션을 개발합니다. 코드에서 사용할 명명 표준 및 트랜잭션 의미 체계는 CCF 키-값 저장소 문서를 참조하세요. 예제 및 모범 사례는 GitHub에 게시된 샘플 애플리케이션을 참조하세요.
애플리케이션 번들 빌드
CCF의 JavaScript 애플리케이션에 대한 네이티브 형식은 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 문서의 애플리케이션에 로깅 추가에 제공된 지침을 따릅니다.
1노드 CCF 네트워크 배포
- /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
- 구성원 인증서와 프라이빗 키는 /workspace/sandbox_0에서 사용 가능합니다. 애플리케이션 로그는 /workspace/sandbox_0/out에서 사용 가능합니다.
- 현재 구성원 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
}
- 네트워크에서 서비스 인증서를 다운로드합니다.
curl -k https://127.0.0.1:8000/node/network | jq -r .service_certificate > service_certificate.pem
애플리케이션 업데이트
애플리케이션 개발은 반복 프로세스입니다. 새 기능이 추가되거나 버그가 수정되면 애플리케이션을 set_js_app 제안으로 수행할 수 있는 1노드 네트워크에 다시 배포해야 합니다.
애플리케이션을 다시 빌드하여 dist 폴더에 새 set_js_app.json 파일을 만듭니다.
제안을 만들어 애플리케이션을 제출합니다. 제안이 수락되면 새 애플리케이션이 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 애플리케이션 배포 지침을 따라 애플리케이션을 배포하는 것입니다.