同事!这样的问题,是否可以通过远程服务器上的shell-runner使用条件?这是一个测试gitlab-ci.yml:
world_branch:
variables:
dir: "/home/TATATA"
environment: staging
script:
- ssh-keyscan -H 192.168.0.12 >> ~/.ssh/known_hosts
- ssh root@192.168.0.12 "
'if [[ -d "$dir" ]]; then
rm -r $dir && mkdir $dir
fi'
"
- rsync -avz --delete-after --exclude=".git" --exclude=".gitlab-ci.yml" . root@192.168.0.12:/home/TATATA
only:
- world
运行作业后,出现下一个错误:
bash: if [[ -d /home/TATATA ]] rm -r /home/TATATA && mkdir /home/TATATA fi: No such file or directory
答案 0 :(得分:1)
仅通过以下方式进行修复:
- ssh root@192.168.0.12 "
if [[ -d "$dir" ]]; then
rm -r $dir && mkdir $dir;
fi
"
我的意思是,您需要在shell命令之后加上
对于shell命令为两个或更多的构造,您只需再次在每个命令的末尾添加;
例如:
- ssh root@192.168.0.12 "
if [[ ! -d "$dir" ]]; then
mkdir $dir;
mkdir $dir/test;
fi
"