func/templates
Lance Ball 36489f3a55
chore: bump faas-js-runtime and cloudevents for node & TS (#1873)
* chore: bump faas-js-runtime and cloudevents for node & TS

The Node.js and TypeScript templates have been bumped to the latest
versions of faas-js-runtime (2.2.2) and CloudEvents (7.0.1).

There is an issue with the `expectType` test for TypeScript CloudEvent
functions which I can't quite figure out, but the type test is not
critical and does not do anything to validate other than whether the
function signature is what's expected by faas-js-runtime, and in this
case, I think type exported type for faas-js-runtime may actually be the
issue here.

Signed-off-by: Lance Ball <lball@redhat.com>

* chore: pin all github actions to go 1.20.2

There was a change in how go parses URLs in versions higher than 1.20.2
(likely 1.20.6 and up) which breaks the Docker API's handling of daemon
URIs. This fix pins the Go version at a version known to work with the
existing Docker API and `func` implementation.

Signed-off-by: Lance Ball <lball@redhat.com>

---------

Signed-off-by: Lance Ball <lball@redhat.com>
2023-07-19 04:17:11 +00:00
..
certs feat: scaffolded functions certs (#1823) 2023-06-26 18:57:51 +00:00
go src: update func-runtime-go and dapr (#1836) 2023-07-18 09:57:10 +00:00
node chore: bump faas-js-runtime and cloudevents for node & TS (#1873) 2023-07-19 04:17:11 +00:00
python Add Python templates for gunicorn and uwsgi + Flask (#1655) 2023-04-10 19:03:48 +00:00
quarkus chore: update Quarkus platform version to 3.2.0.Final (#1844) 2023-07-05 19:00:39 +00:00
rust Cleanup Rust cloudevents example (#1799) 2023-06-10 03:32:59 +00:00
springboot Update springboot template pom.xml dependencies (#1807) 2023-06-14 17:02:46 +00:00
typescript chore: bump faas-js-runtime and cloudevents for node & TS (#1873) 2023-07-19 04:17:11 +00:00
README.md feat: scaffolded functions certs (#1823) 2023-06-26 18:57:51 +00:00
manifest.yaml feat(templates): remove liveness and readiness from defaults (#1555) 2023-02-16 08:23:51 +00:00

README.md

Templates

Contains all example source code, scaffolding, certificates and metadata used by func when creating and building function instances.

To rebuild run make templates (which caches). To force a full rebuild run make clean && make

Layout

Each directory within templates corresponds to a known language runtime. The certs directory is a reserved word containing root SSL certificates. Each directory within a runtime directory corresponds to a named templaate. The scaffolding directory within the runtime directory is a reserved word containing the adapter code that converts a function with a given method signature into a service by way of the external function runtime libraries.

Packaging

When updates are made to these templates, they must be packaged (serialized as a Go byte array) by running make templates (which rebuilds generate/zz_filesystem_generated.go, and checking in the resultant ./generate/zz_filesystem_generated.go file.

How it works

The ./generate/templates directory contains Go program that generates ./generate/zz_filesystem_generated.go. The file defines byte array variable named TemplatesZip. The variable contains ZIP representation of the templates directory. The byte array variable is then used to instantiate exported global variable function.EmbeddedTemplatesFS, which implements standard Go interfaces fs.ReadDirFS and fs.StatFS.

Rationale

Until such time as embedding static assets in binaries is included in the base go build functionality (see https://github.com/golang/go/issues/35950) we need to use our custom serialization script (./generate/templates/main.go).

Native Go embedding introduced in Go 1.16 could be used for executable binary, however it cannot be used for library. For a library we need to generate a Go source code containing the templates.