ExfilGuardian
CI/CD

Releases

Versioning, release process, and distribution

Versioning

Follow Semantic Versioning:

BumpWhenExample
MAJORBreaking API changes1.0.0 -> 2.0.0
MINORNew features, backward-compatible0.1.0 -> 0.2.0
PATCHBug fixes0.1.0 -> 0.1.1

Version is maintained in:

  • Cargo.toml (workspace crates)
  • desktop/package.json

Release Steps

  1. Update version numbers in all manifests
  2. Update changelog
  3. Create a git tag: git tag v0.2.0
  4. Push tag: git push origin v0.2.0
  5. CI builds release binaries on windows-latest
  6. Create GitHub Release with artifacts

Release Artifacts

The release pipeline produces the following Windows executables:

ArtifactDescription
exfil-server.exegRPC + HTTP server for analysis and alerting
exfil-agent.exeWindows agent (flow tracking, gRPC streaming)
exfil-installer.exeWindows service and driver installer
exfil-certs-gen.exemTLS certificate generator

Desktop Distribution

The desktop dashboard is packaged with electron-builder:

PlatformFormatConfig
macOS.dmgelectron-builder.yml -> mac section
Windows.nsis (installer)electron-builder.yml -> win section
Linux.AppImageelectron-builder.yml -> linux section
cd desktop
bun run dist    # Package for current platform

Release 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/*

On this page