CI/CD
Releases
Versioning, release process, and distribution
Versioning
Follow Semantic Versioning:
| Bump | When | Example |
|---|---|---|
| MAJOR | Breaking API changes | 1.0.0 -> 2.0.0 |
| MINOR | New features, backward-compatible | 0.1.0 -> 0.2.0 |
| PATCH | Bug fixes | 0.1.0 -> 0.1.1 |
Version is maintained in:
Cargo.toml(workspace crates)desktop/package.json
Release Steps
- Update version numbers in all manifests
- Update changelog
- Create a git tag:
git tag v0.2.0 - Push tag:
git push origin v0.2.0 - CI builds release binaries on
windows-latest - Create GitHub Release with artifacts
Release Artifacts
The release pipeline produces the following Windows executables:
| Artifact | Description |
|---|---|
exfil-server.exe | gRPC + HTTP server for analysis and alerting |
exfil-agent.exe | Windows agent (flow tracking, gRPC streaming) |
exfil-installer.exe | Windows service and driver installer |
exfil-certs-gen.exe | mTLS certificate generator |
Desktop Distribution
The desktop dashboard is packaged with electron-builder:
| Platform | Format | Config |
|---|---|---|
| macOS | .dmg | electron-builder.yml -> mac section |
| Windows | .nsis (installer) | electron-builder.yml -> win section |
| Linux | .AppImage | electron-builder.yml -> linux section |
cd desktop
bun run dist # Package for current platformRelease Workflow (CI)
The release.yml workflow triggers on tags matching v*:
name: Release
on:
push:
tags: ["v*"]
jobs:
build-rust:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --release --workspace
- uses: softprops/action-gh-release@v2
with:
files: |
target/release/exfil-server.exe
target/release/exfil-agent.exe
target/release/exfil-installer.exe
target/release/exfil-certs-gen.exe
package-desktop:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- run: cd desktop && bun install && bun run dist
- uses: softprops/action-gh-release@v2
with:
files: desktop/release/*