增加可执行文件的编译和打包脚本
This commit is contained in:
parent
62a81d770e
commit
fe0ebce926
90
scripts/build_package.sh
Normal file
90
scripts/build_package.sh
Normal file
@ -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"
|
||||
Loading…
Reference in New Issue
Block a user