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
):
# build wfx
go build
# build the rest (optional)
go build ./cmd/wfxctl
go build ./cmd/wfx-loadtest
go build ./cmd/wfx-viewer
The above commands produce 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 can be used to opt-out from various features at compile-time. By default, all features are enabled. The following build tags are available:
Build Tag | Description |
---|---|
no_sqlite | Disable built-in SQLite support |
libsqlite3 | Dynamically link against libsqlite3 |
no_postgres | Disable built-in PostgreSQL support |
no_mysql | Disable built-in MySQL support |
no_plugin | Disable support for external plugins |
no_swagger | Disable legacy swagger.json endpoint |
Example:
go build -tags no_mysql,no_sqlite
Note:
- wfx requires at least one persistent storage to save workflows and jobs
- 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
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).
go install github.com/siemens/wfx@latest
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
.