Something went wrong. Try again.
A collection of reusable WebAssembly modules for building composable CI/CD pipelines with FluentCI
Something went wrong. Try again.
Files
- PureScript 91%
- Python 9%
README.md
# FluentCI Modules
Reusable CI/CD modules written in PureScript and compiled to WebAssembly for
FluentCI. Build containers, package Linux applications, publish artifacts, and
cache Nix build outputs using independently configured modules.
## Modules
All five modules are registered in [fluentci.toml](./fluentci.toml).
| Module | Purpose | WebAssembly functions |
| --- | --- | --- |
| [cachix](./caching/cachix/README.md) | Configure a Cachix cache and upload Nix outputs. | `setup`, `push` |
| [buildx](./containers/buildx/README.md) | Run Docker Buildx with typed command arguments. | `build`, `bake`, `create`, and [other commands](./containers/buildx/OPTIONS.md) |
| [gemfury](./publishing/gemfury/README.md) | Upload existing packages to a Gemfury account. | `upload` |
| [dpkg](./build/dpkg/README.md) | Build `.deb` packages from a validated package root. | `validate`, `build` |
| [rpmbuild](./build/rpmbuild/README.md) | Build `.rpm` packages from a validated RPM tree. | `validate`, `build` |
Each module has its own dependencies, build scripts, tests, and documentation.
Source APIs also expose helpers for composition in PureScript pipelines.
## Usage
Install FluentCI and the host tools required by the module you want to use.
Declare the module in your project's `fluentci.toml`, pointing `path` to its
local source directory. For example, when the module is available under
`vendor/fluentci-modules`:
```toml
[[modules]]
name = "gemfury"
version = "0.1.0"
path = "vendor/fluentci-modules/publishing/gemfury"
sdk = "purescript"
```
Build a package using your project's packaging tools, supply credentials
through your environment or CI secret store, and upload it:
```sh
export FURY_ACCOUNT=my-account
export FURY_USER=publisher
# Supply FURY_TOKEN through your shell or CI secret store.
fluentci run gemfury upload dist/widget_1.2.0_arm64.deb
```
Buildx, dpkg, and rpmbuild accept JSON objects as plugin input. For example,
the dpkg `build` function accepts:
```json
{
"directory": "package",
"arch": "arm64",
"out…