Erstellen, Testen und Bereitstellen einer TypeScript- und JavaScript-Anwendung
In diesem Leitfaden werden die Schritte zum Entwickeln einer TypeScript- und JavaScript-Anwendung für CCF beschrieben, lokal debuggen und in einer verwalteten CCF-Ressource in der Cloud bereitgestellt.
Voraussetzungen
- Installieren von CCF
- Node.js
- npm
-
- Python 3+.
- Installieren Sie die neueste Version des CCF Python-Pakets.
In diesem Handbuch wird Visual Studio Code als IDE verwendet. Aber jede IDE mit Unterstützung für Node.js, JavaScript und TypeScript-Anwendungsentwicklung kann verwendet werden.
Projekt einrichten
- Befolgen Sie die Anweisungen in der CCF-Dokumentation, um das Projekt zu starten und die erforderliche Ordnerstruktur einzurichten.
Entwickeln der Anwendung
- Entwickeln Sie die TypeScript-Anwendung, indem Sie die Dokumentation hier ausführen. In der Dokumentation zum CCF Key-Value-Speicher erfahren Sie mehr über die Benennungsstandards und die Transaktionssemantik, die im Code verwendet werden sollen. Beispiele und bewährte Methoden finden Sie in den Beispielanwendungen, die in GitHub veröffentlicht wurden.
Erstellen des Anwendungspakets
Das systemeigene Format für JavaScript-Anwendungen in CCF ist ein JavaScript-Anwendungsbundle oder ein kurzes App-Bündel. Ein Bündel kann direkt in einen Governance-Vorschlag für die Bereitstellung eingeschlossen werden. Befolgen Sie die Anweisung zum Erstellen eines Anwendungspakets in der CCF-Dokumentation, um ein App-Bündel zu erstellen und sich auf die Bereitstellung vorzubereiten.
Erstellen Sie die Anwendung. Das Anwendungsbundle wird im Dist-Ordner erstellt. Das Anwendungsbundle wird in einer Datei mit dem Namen set_js_app.json platziert.
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
Protokollierung
- CCF stellt Makros bereit, um der Ausgabe des Knotens eigene Zeilen hinzuzufügen. Folgen Sie den Anweisungen zum Hinzufügen der Protokollierung zu einer Anwendung in der CCF-Dokumentation.
Bereitstellen eines 1-Knoten-CCF-Netzwerks
- Führen Sie das Skript "/opt/ccf_virtual/bin/sandbox.sh" aus, um ein 1-Knoten-CCF-Netzwerk zu starten und das Anwendungsbundle bereitzustellen.
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
- Das Mitgliedszertifikat und der private Schlüssel sind unter /workspace/sandbox_0 verfügbar. Das Anwendungsprotokoll ist unter /workspace/sandbox_0/out verfügbar.
- An diesem Punkt haben wir ein lokales CCF-Netzwerk mit einem Mitglied erstellt und die Anwendung bereitgestellt. Der Netzwerkendpunkt ist
https://127.0.0.1:8000
. Das Mitglied kann an Governancevorgängen teilnehmen, z. B. das Aktualisieren der Anwendung oder das Hinzufügen weiterer Mitglieder durch Einreichen eines Vorschlags.
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
}
- Laden Sie das Dienstzertifikat aus dem Netzwerk herunter.
curl -k https://127.0.0.1:8000/node/network | jq -r .service_certificate > service_certificate.pem
Aktualisieren der Anwendung
Die Anwendungsentwicklung ist ein iterativer Prozess. Wenn neue Features hinzugefügt werden oder Fehler behoben werden, muss die Anwendung erneut im 1-Knoten-Netzwerk bereitgestellt werden, das mit einem set_js_app Vorschlag erfolgen kann.
Erstellen Sie die Anwendung neu, um eine neue set_js_app.json-Datei im Dist-Ordner zu erstellen.
Erstellen Sie einen Vorschlag, um den Antrag zu übermitteln. Nachdem der Vorschlag angenommen wurde, wird die neue Anwendung im 1-Knoten-Netzwerk bereitgestellt.
Hinweis
In einem lokalen 1-Knoten-Netzwerk wird ein Vorschlag sofort angenommen, nachdem er übermittelt wurde. Es ist nicht erforderlich, eine Abstimmung einzureichen, um den Vorschlag anzunehmen oder abzulehnen. Der Grund dafür ist, den Entwicklungsprozess schnell zu gestalten. Dies unterscheidet sich jedoch von der Funktionsweise der Governance in Azure Managed CCF, bei der Mitglieder eine Abstimmung einreichen müssen, um einen Vorschlag anzunehmen oder abzulehnen.
$ 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
Bereitstellen der Anwendung in einer verwalteten CCF-Ressource
Der nächste Schritt besteht darin, eine verwaltete CCF-Ressource zu erstellen und die Anwendung bereitzustellen, indem Sie die Anweisungen bei der Bereitstellung einer JavaScript-Anwendung befolgen.