如果条件是通过shell-runner在gitlab-ci.yml中

时间:2018-07-29 13:46:55

标签: git gitlab gitlab-ci gitlab-ci-runner

同事!这样的问题,是否可以通过远程服务器上的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

1 个答案:

答案 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
     "