我在另一个项目中使用了管道,并且在这里起作用了。
但是现在我有一个问题(我使用的设置完全相同)
staging_upload:
stage: staging
only:
refs:
- develop
- schedules
script:
- sshpass -e rsync -avz --progress --exclude='.git' --exclude='.gitlab-ci.yml' . $SSH_USERNAME@j$HOST:/home/xy/html/project/staging/
现在我收到此错误:
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(644) [sender=3.1.2]
有人知道这里出了什么问题吗?
答案 0 :(得分:0)
sshpass
在gitlab-ci.yml
个文件中非常rarely used。
Much more frequent是ssh代理的使用(如果您的私钥受密码保护),as seen here。
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- 'which rsync || ( apt-get update -y && apt-get install rsync -y )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY_DEV")
- ssh-add <(echo "$SSH_PRIVATE_KEY_PROD")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo "$SSH_HOSTKEYS" > ~/.ssh/known_hosts'
dev:
script:
- rsync --exclude=.gitlab-ci.yml --exclude=.git -avx -e ssh `pwd`/ dbasdev@iaas.ouce.ox.ac.uk:/var/www/html/it_dev/it_monitor_app/auth/
使用masked variable作为私钥,检查这种方法是否更可靠。
答案 1 :(得分:0)
尝试使用-v(或2)运行脚本。详细的输出将告诉您停止的位置/原因。另外,请验证您的转义字符和绝对路径。这是rsync停顿的常见原因。