使用 rsync 与 gitlab-ci.yml 同步 Wordpress 主题文件夹
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
复选框,这样每个分支都可以使用秘密变量,或者采用更安全的方法并将我的分支(例如 master
)添加为受保护的分支。
现在一切都恢复正常了。再次感谢@pynexj 指出导致脚本问题的原因。
在尝试使用 .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
复选框,这样每个分支都可以使用秘密变量,或者采用更安全的方法并将我的分支(例如 master
)添加为受保护的分支。
现在一切都恢复正常了。再次感谢@pynexj 指出导致脚本问题的原因。