编辑文件 my-first-workflow.yaml
This commit is contained in:
@@ -7,11 +7,38 @@ when:
|
||||
|
||||
skip_clone: true # 关闭默认clone,手动拉取代码
|
||||
|
||||
# 流水线核心步骤:修复变量解析+YAML格式
|
||||
# 流水线核心步骤:修复插件模板兼容+变量验证
|
||||
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:拉取代码 ==========
|
||||
- name: prepare
|
||||
image: debian:bookworm
|
||||
depends_on: [validate env vars]
|
||||
commands:
|
||||
- export GIT_CONFIG_URL="https://cnb:${CNB_ACCK}@cnb.cool/blzing/blazing"
|
||||
- apt update -y
|
||||
@@ -87,18 +114,17 @@ steps:
|
||||
- /root/.cache/go-build
|
||||
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:
|
||||
# 核心修复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" }}
|
||||
# 核心修复:仅使用最简模板语法 {{ .变量名 }},移除管道符
|
||||
host: {{ .LOGIN_SERVER_HOST }}
|
||||
username: {{ .LOGIN_SERVER_USER }}
|
||||
password: {{ .LOGIN_SERVER_PASSWORD }}
|
||||
port: {{ .LOGIN_SERVER_PORT }}
|
||||
source:
|
||||
- ./blazing-project/build/login_*
|
||||
- ./blazing-project/build/logic_*
|
||||
@@ -107,17 +133,17 @@ steps:
|
||||
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:
|
||||
# 核心修复:变量前加. + 增加默认值
|
||||
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" }}
|
||||
# 核心修复:仅使用最简模板语法 {{ .变量名 }}
|
||||
host: {{ .LOGIN_SERVER_HOST }}
|
||||
username: {{ .LOGIN_SERVER_USER }}
|
||||
password: {{ .LOGIN_SERVER_PASSWORD }}
|
||||
port: {{ .LOGIN_SERVER_PORT }}
|
||||
script:
|
||||
- |
|
||||
cd /opt/login
|
||||
|
||||
Reference in New Issue
Block a user