使用yml文件gitlab自动git clone

时间:2017-01-13 10:13:09

标签: php git yaml gitlab

我正在尝试使用gitlab yml文件在服务器上设置自动git clone / pull。

如何检查git存储库是否存在使用yml脚本,如果存在则git pull否则make git clone。 我想要低于输出:

If GIT REPO NOT EXIST then

   git clone

else

  no action

下面是我的yml文件,任何人都可以帮助我

cache:
  paths:
  - vendor/

before_script:
  - php -v
  - pwd
  - mkdir -p /var/www/html
  - if [ ! -d /var/www/html/.git ] then
  - git clone http://username:password@XX.XX.XX.XXX/root/myproject.git /var/www/html
  - fi

stages:
  - deploy

deploy_staging:
  stage: deploy
  script:
    - echo "Deploy to staging server"
  environment:
    name: staging
    url: http://XX.XX.XX.XXX/
  script:
    - cd $webroot
    - git pull

1 个答案:

答案 0 :(得分:0)

我假设您收到“意外的文件结束”错误。首先,你错过了if的分号,它应该是getViews

如果我没记错的话,每个命令都在自己的shell中执行。 所以GitLab执行:

if [ ! -d ... ]; then

另一个问题是if,git clone和fi没有连接。所以你可以使用多行字符串或使用一些简写:

sh -c 'php -v'
sh -c 'pwd'
sh -c 'mkdir -p /var/www/html'
sh -c 'if [ ! -d /var/www/html/.git ] then'
sh -c 'git clone http://username:password@XX.XX.XX.XXX/root/myproject.git /var/www/html'
sh -c 'fi'

这说明:如果目录检查失败(before_script: - php -v - pwd - mkdir -p /var/www/html - [ -d /var/www/html/.git ] || git clone http://username:password@XX.XX.XX.XXX/root/myproject.git /var/www/html 在找不到目录时失败),请执行[ -dgit clone运算符是shell在命令失败时执行的操作,||运算符是命令成功时执行的操作。