diff --git a/.gitignore b/.gitignore index f45f0c7..c69fa41 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ .idea /.env Cargo.lock -hagent_test.sock \ No newline at end of file +hagent_test.sock +release diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..a397f1d --- /dev/null +++ b/build.sh @@ -0,0 +1,75 @@ +#!/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