#!/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