diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile new file mode 100644 index 0000000..f010fa0 --- /dev/null +++ b/.gitpod.Dockerfile @@ -0,0 +1,24 @@ +FROM gitpod/workspace-base:latest + +# ------------------------------------ +# Install Go +# ------------------------------------ +ENV GO_VERSION=1.20 + +ENV GOPATH=$HOME/go-packages +ENV GOROOT=$HOME/go +ENV PATH=$GOROOT/bin:$GOPATH/bin:$PATH +RUN curl -fsSL https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz | tar xzs \ + && printf '%s\n' 'export GOPATH=/workspace/go' \ + 'export PATH=$GOPATH/bin:$PATH' > $HOME/.bashrc.d/300-go + +# ------------------------------------ +# Install TinyGo +# ------------------------------------ +ARG TINYGO_VERSION="0.27.0" +RUN wget https://github.com/tinygo-org/tinygo/releases/download/v${TINYGO_VERSION}/tinygo_${TINYGO_VERSION}_amd64.deb +RUN sudo dpkg -i tinygo_${TINYGO_VERSION}_amd64.deb +RUN rm tinygo_${TINYGO_VERSION}_amd64.deb + +RUN go install github.com/go-task/task/v3/cmd/task@latest +RUN go install -v golang.org/x/tools/gopls@latest diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000..527c76d --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,2 @@ +image: + file: .gitpod.Dockerfile diff --git a/Taskfile.yml b/Taskfile.yml index 48d8d48..a55b2d1 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -25,7 +25,9 @@ tasks: #TAG: "v0.3.5" #TAG: "v0.3.6" # next release #TAG: "v0.3.7" # next release (this is a pre-release) - TAG: "v0.3.8" + #TAG: "v0.3.8" + TAG: "v0.3.9" + #TAG: "v0.4.0" cmds: - echo "📦 Generating release..." @@ -36,13 +38,13 @@ tasks: remove-tag: env: - TAG: "v0.3.8" + TAG: "v0.3.9" cmds: - git tag -d ${TAG} build-releases: env: - TAG: "v0.3.8" + TAG: "v0.3.9" cmds: - | cd capsule-cli @@ -75,7 +77,7 @@ tasks: build-push-docker-image: vars: IMAGE_BASE_NAME: "capsule-http" - IMAGE_TAG: "0.3.8" + IMAGE_TAG: "0.3.9" cmds: - echo "👋 {{.IMAGE_BASE_NAME}}-{{.GOOS}}-{{.GOARCH}}:{{.IMAGE_TAG}}" - | diff --git a/capsule-http/Taskfile.yml b/capsule-http/Taskfile.yml index ad79cd5..0ecc0bf 100644 --- a/capsule-http/Taskfile.yml +++ b/capsule-http/Taskfile.yml @@ -63,7 +63,7 @@ tasks: GOOS: "linux" GOARCH: "arm64" IMAGE_BASE_NAME: "capsule-http" - IMAGE_TAG: "0.3.8" + IMAGE_TAG: "0.3.9" cmds: - | IMAGE_NAME="${IMAGE_BASE_NAME}-${GOOS}-${GOARCH}" @@ -365,6 +365,17 @@ tasks: -target wasi ./main.go ls -lh *.wasm + start-index-html: + env: + HTTP_PORT: '7777' + WASM_FILE: './functions/index-html/index.wasm' + cmds: + - | + echo "🚀 Testing hey..." + ./capsule-http --wasm=${WASM_FILE} --httpPort=${HTTP_PORT} + + + test-index-html: env: DATA: 'Bob Morane' diff --git a/capsule-http/functions/hello-world/Dockerfile b/capsule-http/functions/hello-world/Dockerfile index 5b8af31..2ff050c 100644 --- a/capsule-http/functions/hello-world/Dockerfile +++ b/capsule-http/functions/hello-world/Dockerfile @@ -1,4 +1,4 @@ -FROM botsgarden/capsule-http-linux-arm64:0.3.8 +FROM botsgarden/capsule-http-linux-arm64:0.3.9 COPY hello-world.wasm . EXPOSE 8080 CMD ["/capsule-http", "--wasm=./hello-world.wasm", "--httpPort=8080"] diff --git a/capsule-http/functions/index-html/README.md b/capsule-http/functions/index-html/README.md new file mode 100644 index 0000000..7f1b9d1 --- /dev/null +++ b/capsule-http/functions/index-html/README.md @@ -0,0 +1,10 @@ +# Serving HTML with Capsule HTTP server + +```bash +# build and install capsule-http +task install +# build the wasm module +task build +# serve the wasm module +task serve +``` diff --git a/capsule-http/functions/index-html/Taskfile.yml b/capsule-http/functions/index-html/Taskfile.yml new file mode 100644 index 0000000..9be943d --- /dev/null +++ b/capsule-http/functions/index-html/Taskfile.yml @@ -0,0 +1,35 @@ +version: '3' + +# capsctl usages +tasks: + + # build capsule-http and deploy on OVH + install: + cmds: + - | + echo "📦 Building capsule-http..." + cd ../.. + pwd + env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o capsule-http + ls -lh capsule-http + sudo cp capsule-http /usr/local/bin/capsule-http + capsule-http --version + + build: + cmds: + - | + echo "📦 Building index.wasm module..." + tinygo build -o index.wasm \ + -scheduler=none \ + --no-debug \ + -target wasi ./main.go + ls -lh *.wasm + + serve: + env: + HTTP_PORT: '7070' + WASM_FILE: './index.wasm' + cmds: + - | + capsule-http --wasm=${WASM_FILE} --httpPort=${HTTP_PORT} + diff --git a/capsule-http/functions/index-html/index.html b/capsule-http/functions/index-html/index.html new file mode 100644 index 0000000..9951fa9 --- /dev/null +++ b/capsule-http/functions/index-html/index.html @@ -0,0 +1,24 @@ + + + + Capsule 💜 Wasm & Wazero + + + + + +
+
+

👋 Hello World 🌍

+

Served with 💜 by Capsule [HTTP] v0.3.9 🥒 [cucumber] 💊

+

🎉 Happily built thanks to Wazero

+
+
+ + + diff --git a/capsule-http/functions/index-html/main.go b/capsule-http/functions/index-html/main.go index f42eaa1..25e47f4 100644 --- a/capsule-http/functions/index-html/main.go +++ b/capsule-http/functions/index-html/main.go @@ -1,24 +1,28 @@ -// Package main +// Package main, this module is serving HTML package main import ( + _ "embed" capsule "github.com/bots-garden/capsule-module-sdk" ) +var ( + //go:embed index.html + html []byte +) + func main() { - capsule.SetHandleHTTP(Handle) + capsule.SetHandleHTTP(func (param capsule.HTTPRequest) (capsule.HTTPResponse, error) { + return capsule.HTTPResponse{ + TextBody: string(html), + Headers: `{ + "Content-Type": "text/html; charset=utf-8", + "Cache-Control": "no-cache", + "X-Powered-By": "capsule-module-sdk" + }`, + StatusCode: 200, + }, nil + }) } -// Handle function -func Handle(param capsule.HTTPRequest) (capsule.HTTPResponse, error) { - - return capsule.HTTPResponse{ - TextBody: "

👋 Hello World! 🌍

", - Headers: `{ - "Content-Type": "text/html; charset=utf-8", - "Cache-Control": "no-cache", - "X-Powered-By": "capsule-module-sdk" - }`, - StatusCode: 200, - }, nil -} + diff --git a/docs/capsule-http-faas-mode.md b/docs/capsule-http-faas-mode.md index 282ed49..4a2fd11 100644 --- a/docs/capsule-http-faas-mode.md +++ b/docs/capsule-http-faas-mode.md @@ -10,7 +10,7 @@ A Capsule HTTP server can start/spawn other Capsule HTTP server processes. ### Install the last version of Capsule HTTP ```bash -VERSION="v0.3.8" OS="linux" ARCH="arm64" +VERSION="v0.3.9" OS="linux" ARCH="arm64" wget -O capsule-http https://github.com/bots-garden/capsule/releases/download/${VERSION}/capsule-http-${VERSION}-${OS}-${ARCH} chmod +x capsule-http sudo cp capsule-http /usr/local/bin/capsule-http @@ -24,7 +24,7 @@ capsule-http --version **CapsCtl** is a CLI to send commands to the Capsule HTTP server when it is unning in **FaaS** mode. ```bash -VERSION="v0.3.8" OS="linux" ARCH="arm64" +VERSION="v0.3.9" OS="linux" ARCH="arm64" wget -O capsctl https://github.com/bots-garden/capsule/releases/download/${VERSION}/capsctl-${VERSION}-${OS}-${ARCH} chmod +x capsctl sudo cp capsctl /usr/local/bin/capsctl @@ -35,7 +35,6 @@ capsctl --version ## Start Capsule HTTP FaaS mode ```bash -CAPSULE_DOMAIN="http://localhost" \ CAPSULE_FAAS_TOKEN="ILOVEPANDAS" \ capsule-http \ --wasm=./functions/index-page/index-page.wasm \ @@ -43,17 +42,26 @@ capsule-http \ --faas=true ``` +> **Remarks:**: if you use SSL certificates, use these options: +> - `--crt=faas.capsule.foundation.crt` +> - `--key=faas.capsule.foundation.key` + + You should get an output like this: ``` 2023/05/29 15:12:18 🚀 faas mode activated! 2023/05/29 15:12:18 📦 wasm module loaded: ./functions/index-page/index-page.wasm -2023/05/29 15:12:18 💊 Capsule [HTTP] v0.3.8 🥬 [leafy greens] +2023/05/29 15:12:18 💊 Capsule [HTTP] v0.3.9 🥒 [cucumber] http server is listening on: 8080 🌍 ``` -> In a future version, the wasm file won't be mandatory anymore. +> **Remarks:** +> - the wasm file (`--wasm`) is optional (a default message is served if not specified) +> - `CAPSULE_FAAS_TOKEN` is used to authenticate the `capsctl` CLI + +## Start a function -## Launch another Capsule HTTP server +With the FaaS mode activated, you can start functions. It' like running another **Capsule HTTP** processes (one wasm function == one Capsule HTTP process). ```bash export CAPSULE_FAAS_TOKEN="ILOVEPANDAS" @@ -67,13 +75,14 @@ capsctl \ --revision=green \ --description="this the hello module, green revision" \ --env='["MESSAGE=🟢","GREETING=🤗"]' \ - --path="/usr/local/bin/capsule-http" \ --wasm=./functions/hello-green/hello-green.wasm ``` -> - `--stopAfter=10` this will stop the Capsule HTTP server process after 10 seconds +> - `--stopAfter=10` this will stop the Capsule HTTP server process after 10 seconds ()optional > - `--stopAfter` is not mandatory (then the Capsule HTTP server process will never stop) -> - if the process is stopped, the Capsule HTTP server will be restarted at every call -> - `--path` means you can use various version of Capsule HTTP +> - if the process is stopped, the Capsule HTTP server will be restarted at next call +> - `--description=` is optional +> - `--env='["MESSAGE=🟢","GREETING=🤗"]'` allows to pass environment variables to the function (optional) +> - `--wasm`: where to find the wasm file **Now you can use this URL `http://localhost:8080/functions/hello/green` to call the hello green function** @@ -85,20 +94,36 @@ curl -X POST http://localhost:8080/functions/hello/green \ -d "Bob Morane" ``` -## Launch another Capsule HTTP server process +### Default revision + +If you don't specify a revision, the default revision is called **default**, then you can call the function like this: + +```bash +curl -X POST http://localhost:8080/functions/hello \ +-H 'Content-Type: text/plain; charset=utf-8' \ +-d "Bob Morane" +``` + +Or like this: + +```bash +curl -X POST http://localhost:8080/functions/hello/default \ +-H 'Content-Type: text/plain; charset=utf-8' \ +-d "Bob Morane" +``` + +> 👋 the revision concept is useful to handle several version of a wasm module/function. + +## Launch another function ```bash export CAPSULE_FAAS_TOKEN="ILOVEPANDAS" -export CAPSULE_INSTALL_PATH="/usr/local/bin/capsule-http" +export CAPSULE_MAIN_PROCESS_URL="http://localhost:8080" capsctl \ --cmd=start \ - --stopAfter=10 \ --name=hello \ --revision=blue \ - --description="this the hello module, blue revision" \ - --env='["MESSAGE=🔵","GREETING=🎉"]'\ - --path="/usr/local/bin/capsule-http" \ --wasm=./functions/hello-blue/hello-blue.wasm ``` @@ -112,7 +137,7 @@ curl -X POST http://localhost:8080/functions/hello/blue \ -d "Bob Morane" ``` -## Stop and remove a running Capsule HTTP server process +## Drop: stop and remove a running function ```bash export CAPSULE_FAAS_TOKEN="ILOVEPANDAS" @@ -149,3 +174,29 @@ curl -X POST http://localhost:8080/functions/hello/green \ -H 'Content-Type: text/plain; charset=utf-8' \ -d "Bob Morane" ``` + +## Download the wasm module before starting the function + +You can specify to the Capsule HTTP process with the `--url` option, where to download the wasm file and where to save it before starting with the `--wasm` option: + +```bash +export CAPSULE_FAAS_TOKEN="ILOVEPANDAS" +export CAPSULE_MAIN_PROCESS_URL="http://localhost:8080" + +capsctl \ + --cmd=start \ + --name=hello \ + --revision=0.0.1 \ + --wasm= ./store/hello.0.0.1.wasm \ + --url=http://wasm.files.com/hello/0.0.1/hello.0.0.1.wasm +``` + +### Authentication of the downlad + +If you need to provide an authentication token, you can use these options: + +```bash +--authHeaderName="PRIVATE-TOKEN" \ +--authHeaderValue="${GITLAB_WASM_TOKEN}" \ +``` + diff --git a/docs/capsule-http-install-pi.md b/docs/capsule-http-install-pi.md new file mode 100644 index 0000000..94c45bf --- /dev/null +++ b/docs/capsule-http-install-pi.md @@ -0,0 +1,68 @@ +# Run a FaaS on a Raspberry PI + +> I did this on a Pi3A+ with the Raspberry PI OS Lite 64-bit + +## Install Capsule HTTP + +```bash +# connect to the PI +ssh k33g@capsulezero.local + +## Install Capsule HTTP +VERSION="v0.3.9" OS="linux" ARCH="arm64" +wget -O capsule-http https://github.com/bots-garden/capsule/releases/download/${VERSION}/capsule-http-${VERSION}-${OS}-${ARCH} +chmod +x capsule-http +sudo cp capsule-http /usr/local/bin/capsule-http +rm capsule-http +capsule-http --version +``` + +Or you can copy the appropriate Capsule HTTP binary from your computer to the RPI: + +```bash +scp capsule-http-v0.3.9-linux-arm64 k33g@capsulezero.local:./ +``` + +## Start Capsule HTTP FaaS mode + +```bash +ssh k33g@capsulezero.local -f "capsule-http --httpPort=8080 --faas=true" +``` + +Try: `curl http://capsulezero.local:8080`, you should get `Capsule [HTTP] v0.3.9 🥒 [cucumber][faas]` + + +## Deploy some functions + +```bash +# copy the functions to the RPI +cd capsule-http/tests/faas +scp -r ./functions k33g@capsulezero.local:./ +``` + +> requirement, install **CapsCtl**: [capsule-http-faas-mode](capsule-http-faas-mode.md) + +```bash +# start a function using capsctl +export CAPSULE_MAIN_PROCESS_URL="http://capsulezero.local:8080" +capsctl \ + --cmd=start \ + --stopAfter=10 \ + --name=hello \ + --revision=green \ + --env='["MESSAGE=🟢","GREETING=🤗"]' \ + --wasm=./functions/hello-green/hello-green.wasm +``` + +```bash +# Call the function +curl -X POST http://capsulezero.local:8080/functions/hello/green \ +-H 'Content-Type: text/plain; charset=utf-8' \ +-d "Bob Morane" +``` + +## Stop Capsule HTTP FaaS mode + +```bash +ssh k33g@capsulezero.local -f "pkill capsule-http" +``` \ No newline at end of file diff --git a/docs/capsule-http-serve-html.md b/docs/capsule-http-serve-html.md new file mode 100644 index 0000000..09e46de --- /dev/null +++ b/docs/capsule-http-serve-html.md @@ -0,0 +1,83 @@ +# Serve HTML with Capsule HTTP, step by step + +## Create an HTML file: `index.html` + +```html + + + + Capsule 💜 Wasm & Wazero + + + + + +
+
+

👋 Hello World 🌍

+

Served with 💜 by Capsule [HTTP] v0.3.9 🥒 [cucumber] 💊

+

🎉 Happily built thanks to Wazero

+
+
+ + + +``` + +## Create a new WASM module + +```bash +go mod init index +touch main.go +``` + +> `main.go` +```golang +package main + +import ( + _ "embed" + capsule "github.com/bots-garden/capsule-module-sdk" +) + +var ( + //go:embed index.html + html []byte +) + +func main() { + capsule.SetHandleHTTP(func (param capsule.HTTPRequest) (capsule.HTTPResponse, error) { + return capsule.HTTPResponse{ + TextBody: string(html), + Headers: `{ + "Content-Type": "text/html; charset=utf-8", + "Cache-Control": "no-cache", + "X-Powered-By": "capsule-module-sdk" + }`, + StatusCode: 200, + }, nil + }) +} +``` + +## Build the module + +```bash +tinygo build -o index.wasm \ + -scheduler=none \ + --no-debug \ + -target wasi ./main.go +``` + +## Serve the module + +```bash +capsule-http --wasm=./index.wasm --httpPort=7070 +``` + +Go to [http://localhost:7070](http://localhost:7070) with your favorite browser. diff --git a/docs/docker-capsule-http.md b/docs/docker-capsule-http.md index 9b1e9a9..6b54c06 100644 --- a/docs/docker-capsule-http.md +++ b/docs/docker-capsule-http.md @@ -1,8 +1,8 @@ # 🐳 Capsule HTTP Docker image -!!! info "Capsule HTTP Docker images v0.3.8 🥬 [leafy greens]" - - `botsgarden/capsule-http-linux-arm64:0.3.8` - - `botsgarden/capsule-http-linux-amd64:0.3.8` +!!! info "Capsule HTTP Docker images v0.3.9 🥒 [cucumber]" + - `botsgarden/capsule-http-linux-arm64:0.3.9` + - `botsgarden/capsule-http-linux-amd64:0.3.9` > https://hub.docker.com/repositories/botsgarden @@ -13,7 +13,7 @@ ```bash GOOS="linux" GOARCH="arm64" -IMAGE_TAG="0.3.8" +IMAGE_TAG="0.3.9" IMAGE_NAME="botsgarden/capsule-http-${GOOS}-${GOARCH}" docker run \ @@ -29,7 +29,7 @@ docker run \ Create a new `Dockerfile`: ```dockerfile -FROM botsgarden/capsule-http-linux-arm64:0.3.8 +FROM botsgarden/capsule-http-linux-arm64:0.3.9 COPY hello-world.wasm . EXPOSE 8080 CMD ["/capsule-http", "--wasm=./hello-world.wasm", "--httpPort=8080"] diff --git a/docs/getting-started-cli.md b/docs/getting-started-cli.md index 81d3e23..3be2e3e 100644 --- a/docs/getting-started-cli.md +++ b/docs/getting-started-cli.md @@ -5,7 +5,7 @@ First, download the last version of the Capsule CLI for the appropriate OS & ARCH (and release version): ```bash -VERSION="v0.3.8" OS="linux" ARCH="arm64" +VERSION="v0.3.9" OS="linux" ARCH="arm64" wget -O capsule https://github.com/bots-garden/capsule/releases/download/${VERSION}/capsule-${VERSION}-${OS}-${ARCH} chmod +x capsule ``` diff --git a/docs/getting-started-http-ngrok.md b/docs/getting-started-http-ngrok.md index 310f727..1a09655 100644 --- a/docs/getting-started-http-ngrok.md +++ b/docs/getting-started-http-ngrok.md @@ -15,7 +15,7 @@ NGROK_AUTHTOKEN="${YOUR_NGROK_AUTHTOKEN}" \ The ouput will be like this: ```bash -2023/05/18 11:25:36 💊 Capsule v0.3.8 🥬 [leafy greens] http server is listening on: 6666 🌍 +2023/05/18 11:25:36 💊 Capsule v0.3.9 🥒 [cucumber] http server is listening on: 6666 🌍 2023/05/18 11:25:37 👋 Ngrok tunnel created: https://d298-88-173-112-231.ngrok-free.app 2023/05/18 11:25:37 🤚 Ngrok URL: /home/ubuntu/workspaces/capsule/capsule-http/ngrok.url ``` diff --git a/docs/getting-started-http.md b/docs/getting-started-http.md index 9ae74cf..fac4014 100644 --- a/docs/getting-started-http.md +++ b/docs/getting-started-http.md @@ -5,7 +5,7 @@ First, download the last version of the Capsule HTTP server for the appropriate OS & ARCH (and release version): ```bash -VERSION="v0.3.8" OS="linux" ARCH="arm64" +VERSION="v0.3.9" OS="linux" ARCH="arm64" wget -O capsule-http https://github.com/bots-garden/capsule/releases/download/${VERSION}/capsule-http-${VERSION}-${OS}-${ARCH} chmod +x capsule-http ``` diff --git a/docs/index.md b/docs/index.md index edf89e9..a663a76 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,7 @@ # Capsule Project: the nano wasm runners !!! info "What's new?" + - `v0.3.9 🥒 [cucumber]`: update of [HDK 0.0.3](https://github.com/bots-garden/capsule-host-sdk) with [Wazero 1.2.0](https://github.com/tetratelabs/wazero/releases/tag/v1.2.0) and [MDK 0.0.2](https://github.com/bots-garden/capsule-module-sdk) (encoding of the HTML string into JSON string, then it's easier to serve HTML) - `v0.3.8 🥬 [leafy greens]`: 🐛 fixes of the **FaaS** mode - `v0.3.7 🥦 [broccoli]`: 🚀 **FaaS** mode (documentation in progress) + **NGrok** integration - `v0.3.6 🫐 [blueberries]`: Prometheus metrics + 🐳 Docker images @@ -26,7 +27,10 @@ Capsule is a set of **WASM runners**. Right now, the Capsule project is composed **🎉 That means, since now, it's possible to develop various runners thanks to the Capsule Host SDK** -> Tutorials are coming soon! +#### Tutorials +> More tutorials are coming soon! + +- [Capsule: the WASM runners project](https://k33g.hashnode.dev/capsule-the-wasm-runners-project): with this blog post I explain how to create WASM modules (with the **MDK**) for the Capsule CLI and the Capsule HTTP server, but too, how to create your Capsule application (with the **HDK**). ## What does a **WASM Capsule module** look like? diff --git a/go.work b/go.work index d9b2f45..12ed34d 100644 --- a/go.work +++ b/go.work @@ -1,20 +1,20 @@ go 1.20 use ( - ./capsule-http/functions/hello-world - ./capsule-http/functions/hey - ./capsule-http/functions/index-html - ./capsule-http/tests/faas/functions/index-page - ./capsule-http/tests/faas/functions/hello-default - ./capsule-http/tests/faas/functions/hello-green - ./capsule-http/tests/faas/functions/hello-blue - ./capsule-http/tests/faas/functions/hello-orange - ./capsule-http - ./capsule-cli - ./capsule-cli/functions/hello - ./capsule-cli/functions/hey-people - ./capsule-cli/functions/mem-db - ./capsule-cli/functions/redis-db - ./capsctl + ./capsctl + ./capsule-cli + ./capsule-cli/functions/hello + ./capsule-cli/functions/hey-people + ./capsule-cli/functions/mem-db + ./capsule-cli/functions/redis-db + ./capsule-http + ./capsule-http/functions/hello-world + ./capsule-http/functions/hey + ./capsule-http/functions/index-html + ./capsule-http/tests/faas/functions/hello-blue + ./capsule-http/tests/faas/functions/hello-default + ./capsule-http/tests/faas/functions/hello-green + ./capsule-http/tests/faas/functions/hello-orange + ./capsule-http/tests/faas/functions/index-page ) diff --git a/mkdocs.yml b/mkdocs.yml index b101fe2..077bd9d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -21,6 +21,9 @@ nav: - 🛠️ Host functions: host-functions-intro.md - 🐳 Capsule HTTP Docker image: docker-capsule-http.md - 🚀 Capsule HTTP FaaS mode: capsule-http-faas-mode.md + - 🥘 Recipes: + - Serve HTML: capsule-http-serve-html.md + - Install Capsule on a Pi: capsule-http-install-pi.md - 🏭 Capsule HTTP Enterprise: capsule-http-enterprise.md theme: diff --git a/release/README.md b/release/README.md index b5570da..4c80425 100644 --- a/release/README.md +++ b/release/README.md @@ -6,16 +6,14 @@ 👋 **be on the main branch** +Last release: `v0.3.9 🥒 [cucumber]` Last release: `v0.3.8 🥬 [leafy greens]` Last release: `v0.3.7 🥦 [broccoli]` ### Update documentation content with the new tag -- `docs/getting-started-cli.md` -- `docs/getting-started-http.md` -- `docs/index.md` -- `docs/docker-capsule-http.md` -- `docks/capsule-http-faas-mode.md` +Check every documents: +- `docs/*.md` ### Update version number in Go source diff --git a/things.todo b/things.todo index 5c09edc..5083193 100644 --- a/things.todo +++ b/things.todo @@ -1,17 +1,11 @@ # TODO -- documentation: capsule is a set of runners - guide for the host functions - guide for the SDK / PDK -- first release of the SDK and PDK (or MDK==module development kit) ## Capsule http & CLI - How to use STDIN/STDOUT/STDERR -- Create the Docker images for every runner -- 🧩 finalize the first version of capsule builder (ide like) -- Create a mod file for local build https://stackoverflow.com/questions/68764637/how-to-use-an-alternate-go-mod-file-for-local-development -- Load wasm plugin from url +with token - Load wasm plugin from S3 +with token - https://min.io/docs/minio/linux/developers/go/API.html - https://hub.docker.com/r/bitnami/minio/ @@ -23,13 +17,10 @@ ## Capsule http - monitoring features -- protect the routes - hot reload of the wasm module ## Host functions -- Redis -- Prometheus? - CouchBase? - PostGreSQL? - MQTT?