Deployment 使用rsync和sshpass的Gitlab CI自动部署

Deployment 使用rsync和sshpass的Gitlab CI自动部署,deployment,rsync,gitlab-ci,sshpass,Deployment,Rsync,Gitlab Ci,Sshpass,我在gitlab ci上的自动部署有问题。我想把运行在runner上的docker文件发送到远程主机(我的站点主机)。 我的.gitlab ci.yml是这样的 variables: # STAGING CONFIGURATION STAGING_USER: "test@test.com" STAGING_URL: "test.com" # $STAGING_SSH_PASSWORD - configure in gilab->settings->CI/CD->vari

我在gitlab ci上的自动部署有问题。我想把运行在runner上的docker文件发送到远程主机(我的站点主机)。 我的
.gitlab ci.yml
是这样的

variables:
# STAGING CONFIGURATION
  STAGING_USER: "test@test.com"
  STAGING_URL: "test.com"
# $STAGING_SSH_PASSWORD - configure in gilab->settings->CI/CD->variables

# image with php an
image: webdevops/php-apache-dev:5.6

before_script:
  - apt-get update -qq && apt-get install -y -qq sshpass
  - apt-get install zip unzip
  - apt-get install -y ssh
  - mkdir ~/.ssh
  - echo "StrictHostKeyChecking no" >> ~/.ssh/config
  - apt-get install -y rsync

# DEPLOY STAGING
DEPLOY_STAGING:
  stage: deploy
  only:
    - master
  script:
    - export SSHPASS=$STAGING_SSH_PASSWORD
    - rsync -hrvz -e sshpass -e  theme/ $STAGING_USER:~/test/
但是当我尝试这种配置时,我发现了一个错误

rsync:无法执行主题/:权限被拒绝(13)
rsync错误:管道c(85)[接收器=3.1.2]处IPC代码(代码14)错误
rsync:连接意外关闭(到目前为止接收到0字节)[接收器]
rsync错误:io.c(235)处的rsync协议数据流(代码12)中出现错误[接收器=3.1.2]
错误:作业失败:退出代码1


我不知道如何正确配置它。我必须通过sshpass进行身份验证,因为我的服务器不允许rsa身份验证。

您需要将rsync ssh shell参数放在引号中:

rsync -hrvz -e "sshpass -e" theme/ $STAGING_USER:~/test/

在sshpass的手册页面中,我发现了以下示例:

rsync --rsh='sshpass -p 12345 ssh -l test' host.example.com:path . 

谢谢你的回答,但这对我来说不合适。现在我遇到了这样的错误<代码>sshpass:无效选项--“l”协议版本不匹配--您的shell是否干净?(有关解释,请参阅rsync手册页)rsync错误:compat.c(178)[sender=3.1.2]处的协议不兼容(代码2)也许您对此问题有其他想法?