【发布时间】:2020-04-08 18:44:00
【问题描述】:
使用 bitbucket 管道从您从管道获得的构建过程推送到我们的远程。
这是bitbucket-pipelines.yml 文件的sn-p
- pipe: atlassian/ssh-run:0.2.2
variables:
SSH_USER: $PRODUCTION_USER
SERVER: $PRODUCTION_SERVER
COMMAND: '''rsync -zrSlh -e "ssh -p 22007" --stats --max-delete=0 $BITBUCKET_CLONE_DIR/ $PRODUCTION_USER@$PRODUCTION_SERVER:home/$PRODUCTION_USER'''
PORT: '22007'
连接本身可以工作,并且一旦远程连接到服务器上,它就会正确运行命令...
INFO: Executing the pipe...
INFO: Using default ssh key
INFO: Executing command on {HOST}
ssh -A -tt -i /root/.ssh/pipelines_id -o StrictHostKeyChecking=no -p 22007 {USER}@{HOST} 'rsync -zrSlh -e "ssh -p 22007" --stats --max-delete=0 /opt/atlassian/pipelines/agent/build/ {USER}@{HOST}:home/{USER}'
bash: rsync -zrSlh -e "ssh -p 22007" --stats --max-delete=0 /opt/atlassian/pipelines/agent/build/ {USER}@{HOST}:home/{USER}: No such file or directory
Connection to {HOST} closed.
我尝试从我机器上的目录本地运行相同的命令
ssh -A -tt -i /root/.ssh/pipelines_id -o StrictHostKeyChecking=no -p 22007 {USER}@{HOST} 'rsync -zrSlh -e "ssh -p 22007" --stats --max-delete=0 "$PWD" {USER}@{HOST}:/home/{USER}'
但它只是复制了遥控器上的主目录。
在我看来,它正在寻找服务器上的源目录,而不是查看来自 bitbucket 的 docker 容器(或我的本地计算机上的文件 pwd)。
如果我尝试在没有'' 的情况下运行命令,那么它会失败,因为它默认使用端口 22。我还尝试将命令偏移到 bash 脚本中并使用MODE: 'Script',这是plugin 可接受的模式,但我不能在sh 文件中使用我的环境变量。
【问题讨论】:
标签: ssh bitbucket rsync bitbucket-pipelines