我正在尝试使用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
答案 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
在找不到目录时失败),请执行[ -d
。 git clone
运算符是shell在命令失败时执行的操作,||
运算符是命令成功时执行的操作。