From fe0ebce9267cad11abd98c971208e14da66fe73a Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Fri, 27 Dec 2024 16:15:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=AF=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E7=BC=96=E8=AF=91=E5=92=8C=E6=89=93?= =?UTF-8?q?=E5=8C=85=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/build_package.sh | 90 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 scripts/build_package.sh diff --git a/scripts/build_package.sh b/scripts/build_package.sh new file mode 100644 index 0000000..b74b836 --- /dev/null +++ b/scripts/build_package.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +# Color definitions for output +GREEN='\033[0;32m' +RED='\033[0;31m' +NC='\033[0m' # No Color + +# Logging functions +log_info() { + echo -e "${GREEN}[INFO]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +# Get script directory and project root +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(dirname "${SCRIPT_DIR}")" +PROJECT_NAME="CollisionAvoidance" + +# Generate version number based on current time +VERSION=$(date +"%Y%m%d_%H%M%S") +log_info "Building version: ${VERSION}" + +# Create temp directory +TEMP_DIR="${PROJECT_ROOT}/temp_build" +rm -rf "${TEMP_DIR}" +mkdir -p "${TEMP_DIR}/bin" + +# Build the project +log_info "Building project..." +cd "${PROJECT_ROOT}" +rm -rf build +mkdir build +cd build + +# Configure and build +cmake -DCMAKE_BUILD_TYPE=Release .. +if [ $? -ne 0 ]; then + log_error "CMake configuration failed" + exit 1 +fi + +make -j$(nproc) +if [ $? -ne 0 ]; then + log_error "Build failed" + exit 1 +fi + +# Copy executable +log_info "Copying executable..." +cp "bin/${PROJECT_NAME}" "${TEMP_DIR}/bin/" || { + log_error "Failed to copy executable" + exit 1 +} + +# Generate version file +echo "${VERSION}" > "${TEMP_DIR}/bin/version.txt" + +# Generate checksum +cd "${TEMP_DIR}/bin" +sha256sum "${PROJECT_NAME}" > "${PROJECT_NAME}.sha256" + +# Create deployment archive +cd "${TEMP_DIR}" +PACKAGE_NAME="${PROJECT_NAME}_${VERSION}.tar.gz" +tar czf "${PROJECT_ROOT}/${PACKAGE_NAME}" bin/ + +# Cleanup +cd "${PROJECT_ROOT}" +rm -rf "${TEMP_DIR}" + +log_info "Package created: ${PACKAGE_NAME}" +log_info "Package contents:" +log_info " - Executable binary" +log_info " - Version file" +log_info " - Checksum file" + +# Print instructions +echo +log_info "To deploy:" +echo "1. Copy ${PACKAGE_NAME} to production environment" +echo "2. Extract: tar xzf ${PACKAGE_NAME}" +echo "3. Verify checksum: sha256sum -c ${PROJECT_NAME}.sha256" +echo "4. Stop service: systemctl stop collision-avoidance" +echo "5. Backup old binary" +echo "6. Copy new binary: cp bin/${PROJECT_NAME} /usr/local/bin/" +echo "7. Start service: systemctl start collision-avoidance" +echo "8. Check status: systemctl status collision-avoidance" \ No newline at end of file