From 6f8747b174634b23efb009caea453cdc8a4f2fe3 Mon Sep 17 00:00:00 2001 From: xinian Date: Wed, 28 Jan 2026 11:02:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=96=87=E4=BB=B6=20my-first?= =?UTF-8?q?-workflow.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/my-first-workflow.yaml | 51 ++++++++++++++---------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/.woodpecker/my-first-workflow.yaml b/.woodpecker/my-first-workflow.yaml index f7c700f1c..5eea37e06 100644 --- a/.woodpecker/my-first-workflow.yaml +++ b/.woodpecker/my-first-workflow.yaml @@ -7,28 +7,25 @@ when: skip_clone: true # 关闭默认clone,手动拉取代码 -# 流水线核心步骤:整合新的编译+部署流程 +# 流水线核心步骤:修复变量解析+YAML格式 steps: - # ========== 1. 替代clone:拉取代码(对应原sync to github) ========== + # ========== 1. 替代clone:拉取代码 ========== - name: prepare image: debian:bookworm commands: - # 拉取代码(替换为你的仓库地址变量) - export GIT_CONFIG_URL="https://cnb:${CNB_ACCK}@cnb.cool/blzing/blazing" - # 系统初始化 - apt update -y - apt install -y --no-install-recommends ca-certificates curl git openssh-client openssl libssl-dev - # 拉取代码到项目目录 - git clone --depth 1 --progress -v ${GIT_CONFIG_URL} blazing-project - cd blazing-project - echo "✅ 代码拉取完成,当前目录:$(pwd)" - # ========== 2. 生成版本号(前置步骤) ========== + # ========== 2. 生成版本号 ========== - name: set version image: golang:1.23 - depends_on: [prepare] # 替换原sync to github为prepare + depends_on: [prepare] commands: - - cd blazing-project # 进入项目目录 + - cd blazing-project - VERSION="v$(git rev-parse --short=8 HEAD 2>/dev/null || echo "unknown")" - mkdir -p .build-info - echo "BUILD_VERSION=${VERSION}" >> .build-info/.env @@ -37,13 +34,13 @@ steps: # ========== 3. 缓存Go依赖 ========== - name: cache go modules image: meltwater/drone-cache:latest - depends_on: [prepare] # 替换原sync to github为prepare + depends_on: [prepare] settings: restore: true mount: - /go/pkg/mod - /root/.cache/go-build - cache_key: '{{ .Repo.Name }}-{{ .Commit.Branch }}-{{ checksum "blazing-project/go.mod" }}-{{ checksum "blazing-project/login/go.mod" }}' # 补充项目目录 + cache_key: '{{ .Repo.Name }}-{{ .Commit.Branch }}-{{ checksum "blazing-project/go.mod" }}-{{ checksum "blazing-project/login/go.mod" }}' # ========== 4. 编译Logic和Login服务 ========== - name: build @@ -56,8 +53,8 @@ steps: - cache go modules - set version commands: - - cd blazing-project # 进入项目目录 - - . .build-info/.env # 加载版本号 + - cd blazing-project + - . .build-info/.env - mkdir -p build - | # 编译Logic服务 @@ -76,7 +73,6 @@ steps: mv ./build/${BIN_NAME} ../build/ cd .. ls -lh ./build/ - # 写入BIN_NAME到环境文件,供后续步骤使用 - echo "LOGIC_BIN=logic_${BUILD_VERSION}" >> "${CI_ENV_FILE}" - echo "LOGIN_BIN=login_${BUILD_VERSION}" >> "${CI_ENV_FILE}" @@ -89,38 +85,39 @@ steps: mount: - /go/pkg/mod - /root/.cache/go-build - cache_key: '{{ .Repo.Name }}-{{ .Commit.Branch }}-{{ checksum "blazing-project/go.mod" }}-{{ checksum "blazing-project/login/go.mod" }}' # 补充项目目录 + cache_key: '{{ .Repo.Name }}-{{ .Commit.Branch }}-{{ checksum "blazing-project/go.mod" }}-{{ checksum "blazing-project/login/go.mod" }}' - # ========== 6. SCP推送Login和Logic到指定服务器 ========== + # ========== 6. 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 depends_on: [rebuild cache] settings: - # 核心修复:settings块用Go模板语法 {{}} 引用变量 - host: {{ LOGIN_SERVER_HOST }} - username: {{ LOGIN_SERVER_USER }} - password: {{ LOGIN_SERVER_PASSWORD }} - port: {{ LOGIN_SERVER_PORT }} + # 核心修复1:变量前加.,符合Woodpecker模板语法规范 + # 核心修复2:增加默认值,避免变量为空导致解析错误 + host: {{ .LOGIN_SERVER_HOST | default "127.0.0.1" }} + username: {{ .LOGIN_SERVER_USER | default "root" }} + password: {{ .LOGIN_SERVER_PASSWORD | default "" }} + port: {{ .LOGIN_SERVER_PORT | default "22" }} source: - ./blazing-project/build/login_* - ./blazing-project/build/logic_* target: /opt/login/ - strip_components: 2 # 调整层级:blazing-project/build/xxx → 取xxx + strip_components: 2 skip_verify: true timeout: 30s - # ========== 7. SSH启动Login服务并上传Logic到Public ========== + # ========== 7. 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 depends_on: [deploy to login server] settings: - # 核心修复:settings块用Go模板语法 {{}} 引用变量 - host: {{ LOGIN_SERVER_HOST }} - username: {{ LOGIN_SERVER_USER }} - password: {{ LOGIN_SERVER_PASSWORD }} - port: {{ LOGIN_SERVER_PORT }} + # 核心修复:变量前加. + 增加默认值 + host: {{ .LOGIN_SERVER_HOST | default "127.0.0.1" }} + username: {{ .LOGIN_SERVER_USER | default "root" }} + password: {{ .LOGIN_SERVER_PASSWORD | default "" }} + port: {{ .LOGIN_SERVER_PORT | default "22" }} script: - | cd /opt/login