Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用rsync和gitlab-ci.yml同步Wordpress主题文件夹_Git_Shell_Rsync_Sshpass - Fatal编程技术网

使用rsync和gitlab-ci.yml同步Wordpress主题文件夹

使用rsync和gitlab-ci.yml同步Wordpress主题文件夹,git,shell,rsync,sshpass,Git,Shell,Rsync,Sshpass,尝试使用.gitlab ci.yml将主题自动部署到生产服务器时,我收到一个错误: 使用ubuntu:16.04映像执行的命令: 错误结果: 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 comp

尝试使用
.gitlab ci.yml
将主题自动部署到生产服务器时,我收到一个错误:

使用ubuntu:16.04映像执行的命令:

错误结果:

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 repo中

唯一改变的是源git存储库和
/project文件夹/


老实说,我不知道从哪里开始,也不知道如何追踪这个问题,所以我很乐意接受任何建议。

您的
$STAGE\u FTP\u PASS
必须为空,这样命令就会变为空

sshpass -p ssh -o StrictHostKeyChecking=no 

因此
sshpass
会认为
-p ssh
是密码,
-o strichostkeychecking=no
是命令。

您的
$STAGE\u FTP\u PASS
必须为空,因此命令将变为空

sshpass -p ssh -o StrictHostKeyChecking=no 

所以
sshpass
会认为
-psh
是密码,
-o strichostkeychecking=no
是命令。

正如@pynexj已经说过的,
$STAGE\u FTP\u PASS
是一个空字符串,这导致了错误。我在脚本中使用了
echo$STAGE\u FTP\u USER
尝试了这个方法

在插入秘密变量时,我选中了框[X]Protected,该框附带了一个解释:该变量将仅传递给运行在受保护分支和标记上的管道

搜索受保护的分支我注意到,在设置>存储库>受保护的分支中没有设置受保护的分支

因此,我可以选择取消选中
[]受保护的
复选框,这样每个分支都可以使用秘密变量,或者使用更安全的方法将我的分支(例如
)添加为受保护的分支


现在一切又恢复正常了。再次感谢@pynexj指出脚本中出现问题的原因。

正如@pynexj已经说过的,
$STAGE\u FTP\u PASS
是一个空字符串,这导致了错误。我在脚本中使用了
echo$STAGE\u FTP\u USER
尝试了这个方法

在插入秘密变量时,我选中了框[X]Protected,该框附带了一个解释:该变量将仅传递给运行在受保护分支和标记上的管道

搜索受保护的分支我注意到,在设置>存储库>受保护的分支中没有设置受保护的分支

因此,我可以选择取消选中
[]受保护的
复选框,这样每个分支都可以使用秘密变量,或者使用更安全的方法将我的分支(例如
)添加为受保护的分支


现在一切又恢复正常了。再次感谢@pynexj指出脚本中出现问题的原因。

感谢@pynexj,这是正确的。我不能
echo$STAGE\u FTP\u PASS
,即使设置了它,但这是另一个问题,而且是gitlab特有的,我想……非常感谢!)非常好的帮助。我已经添加了一个关于我的确切问题的更详细的解决方案,如果有其他人有相同的问题。我花了足够长的时间找到这个。。。事实上,我是从一个未受保护的分支执行的,但gitlab保护了密码变量,这导致了一个空变量,因此出现了相同的(部分)错误
sshpass:invalid option--“o”
谢谢@pynexj,这是正确的。我不能
echo$STAGE\u FTP\u PASS
,即使设置了它,但这是另一个问题,而且是gitlab特有的,我想……非常感谢!)非常好的帮助。我已经添加了一个关于我的确切问题的更详细的解决方案,如果有其他人有相同的问题。我花了足够长的时间找到这个。。。事实上,我是从一个未受保护的分支执行的,但gitlab保护了密码变量,这导致了一个空变量,因此出现了相同的(部分)错误
sshpass:invalid选项--“o”