traefik / plugindemowasm

This repository includes an example wasm plugin, for you to use as a reference for developing your own plugins
Apache License 2.0
4 stars 1 forks source link

Loading WASM plugin using http-wasm without Go? #6

Open mobileskyfi opened 3 weeks ago

mobileskyfi commented 3 weeks ago

Not sure where to file this.

Just for fun, I've been tried building Traefik WASM plugin using Grain. I'm still working on the http-wasm binding and type-mapping, but it loads/runs as Grain-based WASM plugin from/pluginsLocal/src/grain/plugin.wasm.

While not ready to publish anything on the Traefik Plugin Catalog, I did add the "traefik-plugin" GitHub tag to this project: https://github.com/tikoci/traefik-wasm-grain with following .traefik.yml:

displayName: traefik-wasm-grain
type: middleware
runtime: wasm
iconPath: icon.png
summary: Experimental plugin using WASM and grain-lang.org, directly using http-wasm ABI
testData:
  Headers:
    Foo: Bar

And docs suggest I should have gotten an automated #3 "Plugin Analyzer ... problem" bug reports by virtue of the tag. But that never happened. I even added a tagged release to project – just to trigger something – since I'm not 100% the .traefik.yml is right.

Perhaps the "Plugin Catalog" also check to project type is "Go" – since GitHub flags tikoci/traefik-wasm-grain as a Makefile project?

image

Not urgent here. But be nice to know something could be published to avoid file copies/Dockerfile-mod/etc to "localPlugins".

mobileskyfi commented 3 weeks ago

I figure this out. It was the GitHub language.

Adding this in .gitattributes fix it:

# Grain is Go for Traefik
*.gr linguist-language=go

# see https://github.com/github-linguist/linguist/blob/master/docs/overrides.md

Since this project is kinda the only place where building a WASM plugin is documented, I filled it here. I don't know the traefik plumbing/process, my guess is piceus
searchQuery = "topic:traefik-plugin language:Go archived:false is:public"

While Grain is pretty esoteric, I'd imagine someone will build one of these in Rust/etc soon enough.

Perhaps there should be a new GitHub tag like "traefik-wasm-plugin" (or whatever)?