#!/bin/bash # NAC编译器工具链服务器部署脚本 # 版本: v1.0.0 # 日期: 2026-02-14 set -e # 服务器配置 SERVER_IP="103.96.148.7" SERVER_PORT="22000" SERVER_USER="root" SERVER_PASS="XKUigTFMJXhH" DEPLOY_DIR="/root/nac_compiler_toolchain" echo "=========================================" echo "NAC编译器工具链部署脚本 v1.0.0" echo "=========================================" echo "" # 1. 创建部署目录 echo "[1/6] 创建服务器部署目录..." sshpass -p "$SERVER_PASS" ssh -p $SERVER_PORT -o StrictHostKeyChecking=no \ $SERVER_USER@$SERVER_IP "mkdir -p $DEPLOY_DIR" # 2. 上传源代码包 echo "[2/6] 上传源代码包..." sshpass -p "$SERVER_PASS" scp -P $SERVER_PORT -o StrictHostKeyChecking=no \ NAC_Compiler_Toolchain_Complete_v1.0.0.tar.gz \ $SERVER_USER@$SERVER_IP:$DEPLOY_DIR/ # 3. 上传编译产物包 echo "[3/6] 上传编译产物包..." sshpass -p "$SERVER_PASS" scp -P $SERVER_PORT -o StrictHostKeyChecking=no \ NAC_Compiler_Toolchain_Binaries_v1.0.0.tar.gz \ $SERVER_USER@$SERVER_IP:$DEPLOY_DIR/ # 4. 上传交付报告 echo "[4/6] 上传交付报告..." sshpass -p "$SERVER_PASS" scp -P $SERVER_PORT -o StrictHostKeyChecking=no \ /home/ubuntu/NAC_Compiler_Toolchain_Complete_Delivery_Report_v1.0.md \ $SERVER_USER@$SERVER_IP:$DEPLOY_DIR/ # 5. 解压并安装 echo "[5/6] 在服务器上解压并安装..." sshpass -p "$SERVER_PASS" ssh -p $SERVER_PORT -o StrictHostKeyChecking=no \ $SERVER_USER@$SERVER_IP << 'ENDSSH' cd /root/nac_compiler_toolchain # 解压二进制包 tar -xzf NAC_Compiler_Toolchain_Binaries_v1.0.0.tar.gz # 安装到系统 cp nac_binaries/cnnl /usr/local/bin/ cp nac_binaries/cargo-constitution /usr/local/bin/ chmod +x /usr/local/bin/cnnl chmod +x /usr/local/bin/cargo-constitution # 验证安装 echo "验证CNNL编译器..." cnnl --help || echo "CNNL编译器安装失败" echo "验证cargo-constitution..." cargo-constitution --help || echo "cargo-constitution安装失败" echo "安装完成!" ENDSSH # 6. 运行测试 echo "[6/6] 在服务器上运行测试..." sshpass -p "$SERVER_PASS" ssh -p $SERVER_PORT -o StrictHostKeyChecking=no \ $SERVER_USER@$SERVER_IP << 'ENDSSH' cd /root/nac_compiler_toolchain # 解压源代码包 tar -xzf NAC_Compiler_Toolchain_Complete_v1.0.0.tar.gz # 测试CNNL编译器 echo "测试CNNL编译器..." cd cnnl-compiler cnnl examples/xtzh_gold_coverage.cnnl --output /tmp/test_output # 检查输出 if [ -f /tmp/test_output/constitutional.bin ]; then echo "✅ CNNL编译器测试通过" ls -lh /tmp/test_output/ else echo "❌ CNNL编译器测试失败" fi cd .. # 测试cargo-constitution echo "测试cargo-constitution..." cd cargo-constitution cargo-constitution . || echo "cargo-constitution测试完成" cd .. echo "所有测试完成!" ENDSSH echo "" echo "=========================================" echo "部署完成!" echo "=========================================" echo "" echo "部署信息:" echo " 服务器: $SERVER_IP:$SERVER_PORT" echo " 部署目录: $DEPLOY_DIR" echo " CNNL编译器: /usr/local/bin/cnnl" echo " cargo-constitution: /usr/local/bin/cargo-constitution" echo "" echo "验证命令:" echo " ssh -p $SERVER_PORT $SERVER_USER@$SERVER_IP 'cnnl --help'" echo " ssh -p $SERVER_PORT $SERVER_USER@$SERVER_IP 'cargo-constitution --help'" echo ""