diff --git a/.cnb.yml b/.cnb.yml index 3f420e6b4..1f516774e 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -13,140 +13,3 @@ main: auth_type: https username: ${GIT_USERNAME} password: ${GIT_ACCESS_TOKEN} - - # ========== 生成版本号(作为前置步骤) ========== - - name: set version - image: golang:1.23 - commands: - - VERSION="v$(git rev-parse --short=8 HEAD 2>/dev/null || echo "unknown")" - - mkdir -p .build-info - - echo "BUILD_VERSION=${VERSION}" >> .build-info/.env - - echo "构建版本号:${VERSION}" - depends_on: - - sync to github - - # ========== 缓存Go依赖 ========== - - name: cache go modules - image: meltwater/drone-cache:latest - - settings: - restore: true - mount: - - /go/pkg/mod - - /root/.cache/go-build - cache_key: '{{ .Repo.Name }}-{{ .Commit.Branch }}-{{ checksum "go.mod" }}-{{ checksum "login/go.mod" }}' - depends_on: - - sync to github - - # ========== 编译Logic和Login服务 ========== - - name: build - image: golang:1.25 - - environment: - CGO_ENABLED: 0 - GO111MODULE: on - GOSUMDB: off - commands: - - . .build-info/.env - - mkdir -p build - - | - # 编译Logic服务 - BIN_NAME="logic_${BUILD_VERSION}" - go mod download -x - go build -v -trimpath -buildvcs=false -ldflags "-s -w -buildid= -extldflags '-static'" -o ./build/${BIN_NAME} ./logic - chmod +x ./build/${BIN_NAME} - ls -lh ./build/${BIN_NAME} - # 编译Login服务 - cd login - BIN_NAME="login_${BUILD_VERSION}" - go mod download -x - go build -v -trimpath -buildvcs=false -ldflags "-s -w -buildid= -extldflags '-static'" -o ./build/${BIN_NAME} . - chmod +x ./build/${BIN_NAME} - ls -lh ./build/${BIN_NAME} - mv ./build/${BIN_NAME} ../build/ - cd .. - ls -lh ./build/ - depends_on: - - cache go modules - - set version - - # ========== 重建缓存 ========== - - name: rebuild cache - image: meltwater/drone-cache:latest - settings: - rebuild: true - mount: - - /go/pkg/mod - - /root/.cache/go-build - cache_key: '{{ .Repo.Name }}-{{ .Commit.Branch }}-{{ checksum "go.mod" }}-{{ checksum "login/go.mod" }}' - depends_on: - - build - - # ========== SCP推送Login和Logic到指定服务器 ========== - - name: deploy to login server - image: appleboy/drone-scp:1.6.2 - imports: https://cnb.cool/blzing/key/-/blob/main/githubkey.yml - settings: - host: ${LOGIN_SERVER_HOST} - username: ${LOGIN_SERVER_USER} - password: ${LOGIN_SERVER_PASSWORD} - port: ${LOGIN_SERVER_PORT} - source: - - ./build/login_* - - ./build/logic_* - target: /opt/login/ - strip_components: 1 - depends_on: - - rebuild cache - - # ========== SSH启动Login服务并上传Logic到Public ========== - - name: start login and move logic - image: appleboy/drone-ssh:1.6.2 - imports: https://cnb.cool/blzing/key/-/blob/main/githubkey.yml - settings: - host: ${LOGIN_SERVER_HOST} - username: ${LOGIN_SERVER_USER} - password: ${LOGIN_SERVER_PASSWORD} - port: ${LOGIN_SERVER_PORT} - 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: - - deploy to login server \ No newline at end of file