diff --git a/.woodpecker/my-first-workflow.yaml b/.woodpecker/my-first-workflow.yaml index 24d3551c5..7122cc9bb 100644 --- a/.woodpecker/my-first-workflow.yaml +++ b/.woodpecker/my-first-workflow.yaml @@ -12,25 +12,11 @@ skip_clone: true variables: SCREEN_NAME: "logic_service" REMOTE_EXE_DIR: "/opt/logic" - JSON_CONFIG_URL: "https://你的JSON配置地址.com/deploy.json" + GIT_CONFIG_URL: "https://cnb:$CNB_ACCK@cnb.cool/blzing/blazing" LOG_PATH: "$HOME/run.log" - + # 流水线核心步骤:理顺依赖链,确保各步骤依赖正确 steps: - # ========== 0. 同步代码到GitHub(与prepare并行执行) ========== - sync-to-github: - image: tencentcom/git-sync - settings: - target_url: https://cnb.cool/blzing/blazing - auth_type: https - username: cnb - password: ${CNB_ACCK} - when: - event: - - push - branch: - - main - # ========== 1. 替代clone:拉取代码(核心依赖) ========== prepare: image: debian:bookworm @@ -38,84 +24,70 @@ steps: WOODPECKER_SSH_KEY: from_secret: WOODPECKER_SSH_KEY commands: - # 调试:验证变量是否传递 - - echo "🔍 调试:WOODPECKER_SSH_KEY变量长度 = ${#WOODPECKER_SSH_KEY}" - - echo "🔍 调试:当前环境变量列表(筛选SSH相关)" - - env | grep -i ssh || echo "⚠️ 无SSH相关环境变量" + # 系统初始化 - apt update -y - - apt install -y --no-install-recommends ca-certificates curl git openssh-client openssl libssl-dev - - # 清理旧SSH文件,严格配置权限 - - rm -rf /root/.ssh/* - - mkdir -p /root/.ssh && chmod 700 /root/.ssh - - DEPLOY_KEY_FILE="$HOME/.ssh/deploy_key" - - # 关键修复:SSH密钥写入(EOF内无缩进) - - | - cat > /root/.ssh/id_ed25519 << EOF - $WOODPECKER_SSH_KEY - EOF - chmod 600 /root/.ssh/id_ed25519 - echo "✅ ED25519密钥写入完成" - - # 添加GitHub主机密钥 - - SSH_KNOWN_HOSTS_FILE="$HOME/.ssh/known_hosts" - - ssh-keyscan -H github.com > /root/.ssh/known_hosts - - chmod 600 /root/.ssh/known_hosts - - +# 格式:git clone https://用户名:密码@仓库地址 - - - - echo "🔍 ${#CI_REPO_CLONE_SSH_URL}调试: ${CI_REPO_CLONE_SSH_URL}" - - git config --global core.compression 0 - - - git clone --depth 1 --progress -v ${CI_REPO_CLONE_SSH_URL} + - git clone --depth 1 --progress -v ${GIT_CONFIG_URL} # 拉取代码 - echo "✅ 代码拉取完成" - # ========== 3. 生成版本号(依赖prepare:代码拉取完成) ========== - set-version: - image: golang:1.25 - depends_on: [prepare] - commands: - - | - VERSION="v$(git rev-parse --short=8 HEAD)" - echo "BUILD_VERSION=${VERSION}" >> "$CI_ENV_FILE" - echo "构建版本号:${VERSION}" - echo "✅ 生成版本号:${VERSION}" + # # ========== 2. 初始化Go环境(依赖prepare:代码拉取完成) ========== + # prepare-go: # 与prepare同级,缩进2个空格 + # image: golang:1.25 # 子元素,缩进4个空格 + # depends_on: [prepare] # 子元素,缩进4个空格 + # commands: # 子元素,缩进4个空格 + # - go version # commands内的项,缩进6个空格 + # - go mod download -x || { echo "❌ 下载Go依赖失败"; exit 1; } # 统一缩进6个空格 + # - go mod verify || { echo "❌ 验证Go依赖失败"; exit 1; } # 统一缩进6个空格 + # - echo "✅ Go环境初始化完成" # 统一缩进6个空格 - # ========== 4. 编译Logic服务(完全参考GitHub Actions编译配置) ========== - build_logic: - image: golang:1.25 - depends_on: [prepare] - environment: - CGO_ENABLED: 0 - GO111MODULE: on - GOSUMDB: off - commands: - - mkdir -p build - - BIN_NAME="logic_${BUILD_VERSION}" - - | + # # ========== 3. 生成版本号(依赖prepare-go:Go环境就绪) ========== + # set-version: # 与prepare-go同级,缩进2个空格 + # image: golang:1.25 # 子元素,缩进4个空格 + # depends_on: [prepare-go] # 子元素,缩进4个空格 + # commands: # 子元素,缩进4个空格 + # - | # commands内的项,缩进6个空格 + # if [ -n "${CI_COMMIT_TAG}" ]; then + # VERSION="${CI_COMMIT_TAG}" + # else + # VERSION="v$(git rev-parse --short=8 HEAD 2>/dev/null || echo "unknown")" + # fi + # mkdir -p "$(dirname "$CI_ENV_FILE")" + # echo "BUILD_VERSION=${VERSION}" >> "$CI_ENV_FILE" + # echo "✅ 生成版本号:${VERSION}" + + # ========== 4. 编译Go服务(核心依赖:prepare+prepare-go+set-version) ========== + build_logic: # 与set-version同级,缩进2个空格 + image: golang:1.25 # 子元素,缩进4个空格 + depends_on: [prepare] # 子元素,缩进4个空格 + environment: # 子元素,缩进4个空格 + CGO_ENABLED: 0 # environment内的项,缩进6个空格 + GO111MODULE: on # 统一缩进6个空格 + GOSUMDB: off # 统一缩进6个空格 + commands: # 子元素,缩进4个空格 + - mkdir -p build # commands内的项,缩进6个空格 + - BIN_NAME="logic_${CI_STEP_STARTED}" # 缩进6个空格 + - | # 缩进6个空格 go build -v \ -p=4 \ -trimpath \ -buildvcs=false \ - -ldflags "-s -w -buildid= -extldflags '-static'" \ + -ldflags "-s -w -buildid= -extldflags '-static' -X main.version=${CI_STEP_STARTED}" \ -o ./build/${BIN_NAME} \ ./logic - - | + - | # 缩进6个空格 if [ ! -f ./build/${BIN_NAME} ]; then echo "❌ 编译失败:产物${BIN_NAME}不存在" exit 1 fi - - ls -lh ./build/ - - echo "产物名称:${BIN_NAME}" - - echo "✅ Logic服务编译完成" + - ls -lh ./build/ # 缩进6个空格 + - ./build/${BIN_NAME} -v || true # 缩进6个空格 + - echo "✅ Go服务编译完成" # 缩进6个空格 # ========== 5. 拉取部署配置(可并行,依赖prepare确保代码拉取完成) ========== fetch-deploy-config: # 与build_logic同级,缩进2个空格