Build and Installation
Pre-built binaries, as well as Debian and RPM packages, are available here for Linux, specifically x86_64 and arm64 architectures.
To start a container hosting wfx, follow these commands:
# create a named volume to persist data (only needed the first time)
docker volume create wfx-db
docker run --rm -v wfx-db:/home/nonroot \
-p 8080:8080 -p 8081:8081 \
ghcr.io/siemens/wfx:latest
If pre-built binaries are not available (refer to go tool dist list
for alternative platforms and architectures, such
as Windows or macOS), or if specific features need to be disabled during compilation, building wfx from source is
necessary.
Building wfx
A recent
Go compiler (see go.mod
) as well as
GNU make
wrapping the go build
commands is required to build wfx and its associated tools:
make
The above command produces the following binaries:
wfx
: The server component providing the RESTful APIs for managing workflows and jobs.wfxctl
: Command line client for interacting with the wfx.wfx-loadtest
: Command line tool for load-testing a wfx instance.wfx-viewer
: Convenience tool to visualize workflows in different formats (e.g. PlantUML, Mermaid).
All binaries have extensive help texts when invoked with --help
.
Build Tags
Go build tags are used to select compiled-in support for various features. The following persistent storage selection build tags are available:
Build Tag | Description |
---|---|
sqlite | Enable built-in SQLite support |
libsqlite3 | Dynamically link against libsqlite3 |
postgres | Enable built-in PostgreSQL support |
mysql | Enable built-in MySQL support |
plugin | Enable support for external plugins |
By default, all built-in persistent storage options are enabled (wfx requires at least one persistent storage to save workflows and jobs).
Note that the selection of build tags can impact the size of the wfx
binary file and may as well have implications for
the software clearing process, including obligations that must be met.
To build and compile-in, e.g., SQLite persistent storage support only, according GO_TAGS
must be given:
make GO_TAGS=sqlite
Debian
The Go toolchain provided by Debian stable is often outdated; it’s typically end-of-life upstream but still maintained
by Debian’s security team. Therefore, to compile wfx from source in Debian stable, the -backports
repository is
necessary. In contrast, for Debian testing, it usually works out of the box since it ships with a recent version of
the Go toolchain.
Installing wfx
wfx’s release binaries are statically linked and self-contained. Hence, an installation isn’t strictly necessary,
although if available, it’s recommended to pick the distro packages (e.g. *.deb
for Debian-based distros).
Nevertheless, for convenience on UNIXy systems,
make DESTDIR= prefix= install
installs the binaries to /bin
. Giving a different DESTDIR
and/or prefix
allows to adjust to other locations.
Alternatively, a pre-built Debian package is provided.
For convenience and ease of use, all binaries come with shell completions available for
Bash,
Fish and
Zsh. To install the
completions, refer to the binary’s completion --help
output, e.g. wfx completion bash --help
.