EJ Kmer Builder is a demonstration tool that showcases how to integrate the EJ Builder SDK for automated embedded testing. This tool manages the build and deployment process for the k-mer algorithm benchmark project across different embedded hardware platforms.
It was built as part of the EJ Guide series that can be found here.
This builder application demonstrates what is possible with EJ and the EJ Builder SDK features including:
- Cross-compilation management: Automatically builds k-mer applications for ARM64 targets
- Remote deployment: Handles secure file transfer to embedded devices via SCP
- Job cancellation: Properly cleans up remote processes when jobs are cancelled
cargo install --git https://github.com/embj-org/ejkmer-buildergit clone https://github.com/embj-org/ejkmer-builder.git
cd ejkmer-builder
cargo install --path .Before using this builder, ensure you have:
- Rust toolchain: Latest stable version
- AArch64 cross-compiler: For ARM64 target support
- SSH access: To your target embedded devices
- CMake: For building the k-mer applications
- EJ framework: Either EJB standalone or EJD dispatcher setup
The builder is typically invoked by EJ framework components (EJB), but can be used directly:
# When called by EJ, receives these arguments:
# ejkmer-builder <action> <config_path> <board_name> <board_config_name> <socket_path>
# The application automatically determines whether to build or run based on the action parameterThis project serves as the primary example in EJ Guide 02 - Builder SDK, demonstrating:
- Migration from shell scripts: Shows how to convert basic deployment scripts to robust SDK-based tools
- Job cancellation handling: Demonstrates proper cleanup when tests are interrupted
- Production deployment patterns: Illustrates best practices for embedded test automation
This Rust-based builder provides several advantages over simple shell scripts:
- Cleans up remote processes when jobs are cancelled
- Clear error messages and proper exit codes
- You get to write code in Rust
And some incoveniences:
- Requires compilation step
- Need familiarity with Rust ecosystem
- You get to write code in Rust
- K-mer Benchmark - The application this builder deploys
- EJ Framework - The testing framework this integrates with
- EJ Kmer Dispatcher - Companion dispatcher SDK example
- EJ Builder SDK - The SDK this project demonstrates
Contributions are welcome! This project serves as a reference implementation for the EJ Builder SDK, so improvements that demonstrate best practices or additional SDK features are particularly valuable.
This project is licensed under the MIT License - see the LICENSE file for details.
For questions about this builder or the EJ framework:
- Check the EJ Documentation
- Visit the EJ GitHub Repository
- Review the Builder SDK Documentation