76 lines
2.8 KiB
Bash
Executable File
76 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Скрипт для сборки и копирования бинарников
|
||
# Использование: ./build.sh <архитектура>
|
||
# Поддерживаемые архитектуры: amd64, riscv64
|
||
|
||
if [ -z "$1" ]; then
|
||
echo "Ошибка: Необходимо указать архитектуру (например, amd64 или riscv64)."
|
||
exit 1
|
||
fi
|
||
|
||
ARCH="$1"
|
||
TARGET_DIR="release/${ARCH}"
|
||
CONTAINER_NAME="e-monitor"
|
||
|
||
SUPPORTED_ARCHS=("amd64" "riscv64")
|
||
if [[ ! " ${SUPPORTED_ARCHS[@]} " =~ " ${ARCH} " ]]; then
|
||
echo "Ошибка: Неизвестная архитектура $ARCH. Допустимые значения: ${SUPPORTED_ARCHS[*]}."
|
||
exit 1
|
||
fi
|
||
|
||
# На случай, если контейнер с таким именем уже существует
|
||
docker stop e-monitor && docker rm e-monitor
|
||
|
||
echo "Building Docker image..."
|
||
|
||
docker build --network=host -t e-monitor . || {
|
||
echo "Ошибка: Не удалось построить Docker-образ."
|
||
exit 1
|
||
}
|
||
|
||
echo "Running Docker container..."
|
||
|
||
docker run --name "$CONTAINER_NAME" --dns 8.8.8.8 --network=host e-monitor:latest || {
|
||
echo "Ошибка: Не удалось запустить Docker-контейнер."
|
||
exit 1
|
||
}
|
||
|
||
echo "Creating target directory: $TARGET_DIR"
|
||
mkdir -p "$TARGET_DIR"
|
||
|
||
case "$ARCH" in
|
||
amd64)
|
||
echo "Copying binaries for architecture: amd64"
|
||
docker cp "$CONTAINER_NAME:/usr/src/kii/target/x86_64-unknown-linux-gnu/release/noxis-cli" "$TARGET_DIR/" || {
|
||
echo "Ошибка: Не удалось скопировать noxis-cli для amd64."
|
||
docker stop "$CONTAINER_NAME" && docker rm "$CONTAINER_NAME"
|
||
exit 1
|
||
}
|
||
docker cp "$CONTAINER_NAME:/usr/src/kii/target/x86_64-unknown-linux-gnu/release/noxis-rs" "$TARGET_DIR/" || {
|
||
echo "Ошибка: Не удалось скопировать noxis-rs для amd64."
|
||
docker stop "$CONTAINER_NAME" && docker rm "$CONTAINER_NAME"
|
||
exit 1
|
||
}
|
||
;;
|
||
riscv64)
|
||
echo "Copying binaries for architecture: riscv64"
|
||
docker cp "$CONTAINER_NAME:/usr/src/kii/target/riscv64gc-unknown-linux-gnu/release/noxis-cli" "$TARGET_DIR/" || {
|
||
echo "Ошибка: Не удалось скопировать noxis-cli для riscv64."
|
||
docker stop "$CONTAINER_NAME" && docker rm "$CONTAINER_NAME"
|
||
exit 1
|
||
}
|
||
docker cp "$CONTAINER_NAME:/usr/src/kii/target/riscv64gc-unknown-linux-gnu/release/noxis-rs" "$TARGET_DIR/" || {
|
||
echo "Ошибка: Не удалось скопировать noxis-rs для riscv64."
|
||
docker stop "$CONTAINER_NAME" && docker rm "$CONTAINER_NAME"
|
||
exit 1
|
||
}
|
||
;;
|
||
esac
|
||
|
||
echo "Stopping and removing Docker container..."
|
||
docker stop "$CONTAINER_NAME" && docker rm "$CONTAINER_NAME"
|
||
|
||
echo "Build and extraction completed successfully for architecture: $ARCH"
|
||
exit 0
|