diff --git a/.woodpecker/my-first-workflow.yaml b/.woodpecker/my-first-workflow.yaml index 9bcf269b5..46dfbff58 100644 --- a/.woodpecker/my-first-workflow.yaml +++ b/.woodpecker/my-first-workflow.yaml @@ -118,13 +118,65 @@ steps: scp-exe-to-servers: # 与fetch-deploy-config同级,缩进2个空格 image: appleboy/drone-scp:1.6.2 # 子元素,缩进4个空格 settings: # 子元素,缩进4个空格 - host: ${REMOTE_HOSTS} # settings内的项,缩进6个空格 - username: ${REMOTE_USERS} # 统一缩进6个空格 - password: ${REMOTE_PASSWORDS} # 统一缩进6个空格 - source: ./build/${BIN_NAME} # 统一缩进6个空格 - target: ${REMOTE_EXE_DIR}/ # 统一缩进6个空格 + host: 103.236.78.60 # settings内的项,缩进6个空格 + port: 29713 + username: root # 统一缩进6个空格 + password: dgaoXMPC8325 # 统一缩进6个空格 + source: + - ./build/login_* + - ./build/logic_* + target: /opt/login/ strip_components: 1 # 统一缩进6个空格 skip_verify: true # 统一缩进6个空格 timeout: 30s # 统一缩进6个空格 depends_on: # 子元素,缩进4个空格 - - build_logic # depends_on内的项,缩进6个空格 \ No newline at end of file + - build_logic # depends_on内的项,缩进6个空格 + start-login-logic: + image: appleboy/drone-ssh:1.6.2 + settings: # 子元素,缩进4个空格 + host: 103.236.78.60 # settings内的项,缩进6个空格 + port: 29713 + username: root # 统一缩进6个空格 + password: dgaoXMPC8325 # 统一缩进6个空格 + script: + - | + cd /opt/login + BIN_NAME=$(ls -t login_v* 2>/dev/null | head -1) + echo "BIN_NAME: $BIN_NAME" + if [ -z "$BIN_NAME" ]; then + echo "❌ 未找到可执行的login文件" + exit 1 + fi + echo "📦 启动Login服务 | Binary: $BIN_NAME" + # 停止旧的screen会话 + session_name="login" + session=$(screen -ls 2>/dev/null | grep -o "[0-9]*\.${session_name}" || true) + if [[ ! -z "$session" ]]; then + screen -X -S "$session_name" stuff "^C" + expect -c "exec screen -x ${session_name}; wait; exit" 2>/dev/null || true + screen -X -S "$session_name" quit 2>/dev/null || true + echo "Info: Stopped login app." + fi + sleep 1 + # 启动新进程 + screen -dmS ${session_name} ./${BIN_NAME} + echo "✅ Login服务启动成功 | Screen: ${session_name}" + # 等待服务启动并进行健康检查 + sleep 3 + if screen -list 2>/dev/null | grep -q "${session_name}"; then + echo "✅ 服务健康检查通过 | Screen: ${session_name}" + else + echo "❌ 服务健康检查失败 | Screen: ${session_name} 不存在" + exit 1 + fi + # 移动logic产物到public目录 + LOGIC_BIN=$(ls -t logic_v* 2>/dev/null | head -1) + if [ -n "$LOGIC_BIN" ]; then + mkdir -p /opt/login/public + mv $LOGIC_BIN /opt/login/public/ + echo "✅ Logic产物已移动到 /opt/login/public/ | 文件: $(basename $LOGIC_BIN)" + else + echo "⚠️ 未找到Logic产物" + fi + depends_on: + - scp-exe-to-servers