ci: Configures cross-compilation for Rust
Configures the Rust build environment for cross-compilation within the CI pipeline by setting CARGO_HOME, adding local bin to PATH, and copying the linker configuration from the image. This ensures the build process uses the correct linker settings for the target architecture.
This commit is contained in:
1 file changed
+22
-2
Vendored
+22
-2
@@ -22,9 +22,29 @@ pipeline {
|
|||||||
stage('Build') {
|
stage('Build') {
|
||||||
steps {
|
steps {
|
||||||
sh '''
|
sh '''
|
||||||
|
# 1. Set CARGO_HOME to a writable directory in the workspace
|
||||||
export CARGO_HOME="$(pwd)/.cargo"
|
export CARGO_HOME="$(pwd)/.cargo"
|
||||||
cargo build \
|
mkdir -p "$CARGO_HOME"
|
||||||
--release
|
|
||||||
|
# 2. Add local bin to PATH (for tools you might install)
|
||||||
|
export PATH="$(pwd)/.local/bin:${PATH}"
|
||||||
|
|
||||||
|
# 3. CRITICAL: Copy the cross-compilation config from the image's default location
|
||||||
|
# The image stores the linker configuration in /root/.cargo/config.toml.
|
||||||
|
# Without this, Cargo defaults to the host linker (cc) and fails.
|
||||||
|
if [ -f /root/.cargo/config.toml ]; then
|
||||||
|
cp /root/.cargo/config.toml "$CARGO_HOME/config.toml"
|
||||||
|
else
|
||||||
|
echo "WARNING: /root/.cargo/config.toml not found. Build may fail."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. Debug: Verify the config is present and correct
|
||||||
|
echo "--- Active Cargo Configuration ---"
|
||||||
|
cat "$CARGO_HOME/config.toml"
|
||||||
|
echo "----------------------------------"
|
||||||
|
|
||||||
|
# 5. Build
|
||||||
|
cargo build --release
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user