This project uses GitLab CI/CD to automatically build and test Neuron Encrypt for:
- Linux (x86_64-unknown-linux-gnu) - native build
- Windows (x86_64-pc-windows-gnu) - cross-compiled from Linux
- macOS (x86_64-apple-darwin) - cross-compiled from Linux
- Android (ARM64, ARMv7, x86_64, x86) - native build via cargo-ndk + Gradle
- Fetch dependencies
- Generate lockfile
- Run code quality checks (fmt, clippy, audit, deny)
- Linux: Native release build + tests
- Windows: Cross-compile using mingw-w64 + wine64
- macOS: Cross-compile using osxcross (requires macOS SDK)
- Android: Native build via cargo-ndk + Gradle
- Creates release archives for each platform
- Generates SHA256 checksums
- Packages APK for Android
- Creates GitLab Release with artifacts
- Triggered manually on tag push
- Go to CI/CD > Pipelines
- Click Run pipeline
- Select branch/tag
- Click Run pipeline
curl -X POST \
-H "PRIVATE-TOKEN: <your_token>" \
-F "ref=main" \
"https://gitlab.com/api/v4/projects/<project_id>/pipeline"- Runs nightly with address sanitizer
- Runs on tag push for releases
# Build all platforms locally
./scripts/build-all.sh all
# Build specific platform
./scripts/build-all.sh linux
./scripts/build-all.sh windows
./scripts/build-all.sh macos
./scripts/build-all.sh android
# Package only
./scripts/build-all.sh package# Linux
sudo apt-get install mingw-w64 wine64
# macOS (for cross-compilation)
brew install osxcross
# Android
# - Install Android SDK/NDK
# - Set ANDROID_SDK_ROOT, ANDROID_NDK_HOME
# - Install cargo-ndk: cargo install cargo-ndk --lockedneuron-encrypt-<version>-linux-x86_64.tar.gz
neuron-encrypt-<version>-windows-x86_64.zip
neuron-encrypt-<version>-macos-x86_64.tar.gz
neuron-encrypt-<version>.apk
SHA256SUMS.txtin release directory
# Install mingw-w64
sudo apt-get install mingw-w64
# Verify
x86_64-w64-mingw32-gcc --version# Install osxcross
brew install osxcross
# Set SDKROOT
export SDKROOT=/opt/macos-sdk/MacOSX13.3.sdk# Ensure SDK/NDK paths are set
export ANDROID_SDK_ROOT=$HOME/Android/Sdk
export ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/26.1.10909125
# Accept licenses
yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses# Add intercept CA to truststore
# The CI config includes truststore configuration
export GRADLE_OPTS="-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts -Djavax.net.ssl.trustStorePassword=changeit"- Update version in
neuron-encrypt/Cargo.toml - Update CHANGELOG.md
- Create and push tag:
git tag v2.2.0 git push origin v2.2.0
- Go to GitLab > CI/CD > Pipelines
- Run pipeline for the tag
- When package stage completes, manually trigger
releasejob - Release will be created with all artifacts
- All dependencies audited with
cargo audit - License compliance checked with
cargo deny - SBOM generated on release
- Provenance verification via SLSA