
drillster/drone-rsyncdrone-rsync是一个基于纯Bash编写的Drone CI/CD平台插件,适用于Drone 0.5及以上版本。其核心功能是将Drone工作目录中的文件和目录同步到一个或多个远程主机,支持通过SSH协议进行安全传输,满足CI/CD流程中的远程文件部署需求。
适用于Drone CI/CD流程中需将构建产物、静态资源、配置文件等同步到远程服务器的场景,例如:
若需自行构建镜像,可在项目根目录执行以下命令:
bashdocker build --rm=true -t drillster/drone-rsync .
在本地工作目录中执行(假设本地127.0.0.1:22已运行SSH服务):
bashdocker run --rm \ -e PLUGIN_KEY=$(cat some-private-key) \ # SSH私钥内容(用于远程主机认证) -e PLUGIN_HOSTS="127.0.0.1, 127.0.0.2, 127.0.0.3" \ # 远程主机列表(逗号分隔) -e PLUGIN_PORTS="22, 23, 24" \ # 对应主机的SSH端口(数量需与主机列表一致) -e PLUGIN_TARGET="./" \ # 远程主机上的目标同步目录 -e PLUGIN_PRESCRIPT="echo \"同步前执行脚本完成!\"" \ # 同步前执行的命令 -e PLUGIN_SCRIPT="echo \"同步后执行脚本完成!\"" \ # 同步后执行的命令 -e PLUGIN_ARGS="--blocking-io" \ # 传递给rsync的额外参数 -v $(pwd):$(pwd) \ # 挂载本地工作目录到容器 -w $(pwd) \ # 设置容器工作目录为本地工作目录 drillster/drone-rsync
| 环境变量 | 作用描述 | 示例值 |
|---|---|---|
| PLUGIN_KEY | SSH私钥内容,用于远程主机认证 | $(cat ~/.ssh/id_rsa) |
| PLUGIN_HOSTS | 远程主机IP/域名列表,逗号分隔 | "192.168.1.100, example.com" |
| PLUGIN_PORTS | 对应主机的SSH端口列表,逗号分隔(数量需匹配主机数) | "22, 2222" |
| PLUGIN_TARGET | 远程主机上的目标同步目录 | "/var/www/html" |
| PLUGIN_PRESCRIPT | 同步操作前执行的Bash脚本 | "mkdir -p /tmp/sync" |
| PLUGIN_SCRIPT | 同步操作后执行的Bash脚本 | "chmod -R 755 /var/www/html" |
| PLUGIN_ARGS | 传递给rsync命令的额外参数 | "--delete --exclude=*.log" |
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务