编辑文件 my-first-workflow.yaml

This commit is contained in:
xinian
2026-01-28 11:11:32 +08:00
committed by cnb
parent 6f8747b174
commit ac4e294344

View File

@@ -7,11 +7,38 @@ when:
skip_clone: true # 关闭默认clone手动拉取代码 skip_clone: true # 关闭默认clone手动拉取代码
# 流水线核心步骤修复变量解析+YAML格式 # 流水线核心步骤修复插件模板兼容+变量验证
steps: steps:
# ========== 0. 变量验证新增提前检查关键变量避免后续解析错误 ==========
- name: validate env vars
image: alpine:latest
commands:
- |
# 检查核心部署变量是否配置
REQUIRED_VARS=("LOGIN_SERVER_HOST" "LOGIN_SERVER_USER" "LOGIN_SERVER_PASSWORD")
for var in "${REQUIRED_VARS[@]}"; do
if [ -z "${!var}" ]; then
echo "❌ 错误:未配置变量 $var请在Woodpecker项目设置中补充"
exit 1
fi
done
# 给可选变量设置默认值
export LOGIN_SERVER_PORT=${LOGIN_SERVER_PORT:-22}
# 打印变量调试用生产可删除
echo "✅ 变量验证通过:"
echo "LOGIN_SERVER_HOST: ${LOGIN_SERVER_HOST}"
echo "LOGIN_SERVER_USER: ${LOGIN_SERVER_USER}"
echo "LOGIN_SERVER_PORT: ${LOGIN_SERVER_PORT}"
# 写入CI_ENV_FILE供后续步骤使用
echo "LOGIN_SERVER_HOST=${LOGIN_SERVER_HOST}" >> "${CI_ENV_FILE}"
echo "LOGIN_SERVER_USER=${LOGIN_SERVER_USER}" >> "${CI_ENV_FILE}"
echo "LOGIN_SERVER_PASSWORD=${LOGIN_SERVER_PASSWORD}" >> "${CI_ENV_FILE}"
echo "LOGIN_SERVER_PORT=${LOGIN_SERVER_PORT}" >> "${CI_ENV_FILE}"
# ========== 1. 替代clone拉取代码 ========== # ========== 1. 替代clone拉取代码 ==========
- name: prepare - name: prepare
image: debian:bookworm image: debian:bookworm
depends_on: [validate env vars]
commands: commands:
- export GIT_CONFIG_URL="https://cnb:${CNB_ACCK}@cnb.cool/blzing/blazing" - export GIT_CONFIG_URL="https://cnb:${CNB_ACCK}@cnb.cool/blzing/blazing"
- apt update -y - apt update -y
@@ -87,18 +114,17 @@ steps:
- /root/.cache/go-build - /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 - name: deploy to login server
image: appleboy/drone-scp:1.6.2 image: appleboy/drone-scp:1.6.2
imports: https://cnb.cool/blzing/key/-/blob/main/githubkey.yml imports: https://cnb.cool/blzing/key/-/blob/main/githubkey.yml
depends_on: [rebuild cache] depends_on: [rebuild cache]
settings: settings:
# 核心修复1变量前加.合Woodpecker模板语法规范 # 核心修复仅使用最简模板语法 {{ .变量名 }}移除管道
# 核心修复2增加默认值避免变量为空导致解析错误 host: {{ .LOGIN_SERVER_HOST }}
host: {{ .LOGIN_SERVER_HOST | default "127.0.0.1" }} username: {{ .LOGIN_SERVER_USER }}
username: {{ .LOGIN_SERVER_USER | default "root" }} password: {{ .LOGIN_SERVER_PASSWORD }}
password: {{ .LOGIN_SERVER_PASSWORD | default "" }} port: {{ .LOGIN_SERVER_PORT }}
port: {{ .LOGIN_SERVER_PORT | default "22" }}
source: source:
- ./blazing-project/build/login_* - ./blazing-project/build/login_*
- ./blazing-project/build/logic_* - ./blazing-project/build/logic_*
@@ -107,17 +133,17 @@ steps:
skip_verify: true skip_verify: true
timeout: 30s timeout: 30s
# ========== 7. SSH启动Login服务并移动Logic到Public核心修复变量引用 ========== # ========== 7. SSH启动Login服务并移动Logic到Public核心修复最简模板语法 ==========
- name: start login and move logic - name: start login and move logic
image: appleboy/drone-ssh:1.6.2 image: appleboy/drone-ssh:1.6.2
imports: https://cnb.cool/blzing/key/-/blob/main/githubkey.yml imports: https://cnb.cool/blzing/key/-/blob/main/githubkey.yml
depends_on: [deploy to login server] depends_on: [deploy to login server]
settings: settings:
# 核心修复变量前加. + 增加默认值 # 核心修复仅使用最简模板语法 {{ .变量名 }}
host: {{ .LOGIN_SERVER_HOST | default "127.0.0.1" }} host: {{ .LOGIN_SERVER_HOST }}
username: {{ .LOGIN_SERVER_USER | default "root" }} username: {{ .LOGIN_SERVER_USER }}
password: {{ .LOGIN_SERVER_PASSWORD | default "" }} password: {{ .LOGIN_SERVER_PASSWORD }}
port: {{ .LOGIN_SERVER_PORT | default "22" }} port: {{ .LOGIN_SERVER_PORT }}
script: script:
- | - |
cd /opt/login cd /opt/login