[英]Use rsync with gitlab-ci.yml to sync Wordpress theme folders
尝试使用.gitlab-ci.yml
将主题自动部署到生产服务器时,收到错误消息:
执行的命令:使用ubuntu:16.04图片
$ apt update -y && apt install openssh-client sshpass rsync -y
$ rsync -avh --progress --delete --rsh="sshpass -p $STAGE_FTP_PASS ssh -o StrictHostKeyChecking=no " --exclude=.git ./ $STAGE_FTP_USER@my.wp.address/project-folder/wp-content/themes/sg-coesfeld-theme/
错误结果:
sshpass: invalid option -- 'o'
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(176) [sender=3.1.1]
ERROR: Job failed: exit code 1
我正在使用完全相同的.gitlab-ci.yml
,服务器,FTP帐户,运行程序和gitlab托管成功地在其他git仓库中自动部署。
唯一更改的是源git存储库和/project-folder/
。
老实说,我不知道从哪里开始以及如何追踪这个问题,所以我对任何建议都很满意。
您的$STAGE_FTP_PASS
必须为空,这样命令将变为
sshpass -p ssh -o StrictHostKeyChecking=no
因此sshpass
会认为-p ssh
是密码,而-o StrictHostKeyChecking=no
是命令。
正如@pynexj已经说过的, $STAGE_FTP_PASS
是一个空字符串,这导致了错误。 我已经在脚本中使用echo $STAGE_FTP_USER
进行了尝试。
插入机密变量时,我已选中[X] Protected框,该框附带说明: 此变量将仅传递给在受保护的分支和标签上运行的管道。
搜索我注意到的受保护分支 ,在“设置”>“存储库”>“受保护分支”中未设置受保护分支。
因此,我可以在取消选中[ ] Protected
复选框之间进行选择,以便每个分支都可以使用秘密变量,或者采用更安全的方法并将我的分支(例如master
)添加为受保护的分支。
现在,一切再次恢复正常。 再次感谢@pynexj指出导致脚本问题的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.