NAC_Blockchain/deploy_to_server.sh

117 lines
3.3 KiB
Bash
Executable File

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