demo/.woodpecker/deploy.yaml

64 lines
2.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# .woodpecker/deploy.yaml
# 🛑 注意:文件夹多管线模式下,顶层不要写 kind: pipeline 和 name
# 🔗 显式声明:必须等同目录下的 build.yaml 执行成功才触发当前部署
depends_on:
- build.yaml
# 🛠️ 你的专属集群矩阵定义IP、账密全部完美隐藏进 Secret
matrix:
include:
- NODE_NAME: "集群节点A (136服务器)"
SECRET_NODE_IP: "136_ssh_host"
SECRET_USER_NAME: "136_ssh_user"
SECRET_PASS_NAME: "136_ssh_password"
- NODE_NAME: "集群节点B (114服务器)"
SECRET_NODE_IP: "114_ssh_host"
SECRET_USER_NAME: "114_ssh_user"
SECRET_PASS_NAME: "114_ssh_password"
steps:
- name: 远程终端集群部署
image: docker.m.daocloud.io/appleboy/drone-ssh:latest
settings:
# 👇 1. 完美支持:动态读取你矩阵中填写的各个 Secret 键名
host:
from_secret: ${SECRET_NODE_IP}
username:
from_secret: ${SECRET_USER_NAME}
password:
from_secret: ${SECRET_PASS_NAME}
port: 22
# 👇 2. 完美修复 Linter 报错:把公共的阿里云账密直接作为 secrets 属性传入插件内部!
# 这样完全不需要在外层写 environment插件会自动将它们注入成远程主机的环境变量
secrets: [ aliyun_acr_username, aliyun_acr_password ]
# 把矩阵变量和公共账密同时下发到远程 136/114 终端
envs: [ NODE_NAME, SECRET_NODE_IP, aliyun_acr_username, aliyun_acr_password ]
script:
- echo "========================================="
- echo "🚀 开始部署节点:$NODE_NAME"
- echo "🔒 节点 IP 密文键名:$SECRET_NODE_IP"
- echo "========================================="
# 1. 在各自的远程服务器本土直接登录阿里云(变量由 secrets/envs 安全带入)
- docker login --username "$aliyun_acr_username" --password "$aliyun_acr_password" registry.cn-zhangjiakou.aliyuncs.com
# 2. 清理远程旧容器(防止重名冲突,加 || true 防止第一次找不到报错)
- docker stop demo-container || true
- docker rm demo-container || true
# 3. 远程各服务器本土拉取最新镜像,走各自服务器的网络,绝对不会超时
- docker pull registry.cn-zhangjiakou.aliyuncs.com/abhors/demo:latest
# 4. 直接原生 docker run 轰起来!不需要任何额外文件,不需要 compose
- docker run -d --name demo-container -p 8080:8080 --restart always registry.cn-zhangjiakou.aliyuncs.com/abhors/demo:latest
- echo "🎉 $NODE_NAME 部署成功!"
when:
event: [push, pull_request, manual]
branch: master