2017-01-13 2 views
2

gitlab yml 파일을 사용하여 자동 git clone/pull을 설정하려고합니다.자동 git clone yml 파일을 사용하여 gitlab

yml 스크립트를 사용하여 git 리포지토리를 확인하는 방법, 존재하는 경우 git pull은 그렇지 않으면 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:[email protected]/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

폴더가 있는지 여부를 확인하려면'scandir' 함수를 사용하십시오. http://www.w3schools.com/php/func_directory_scandir.asp –

+0

@prakash에 감사하지만 gitlab YML 파일 스크립트를 확인하고 싶습니다. YML 파일 스크립트에 대해 알고 있다면 알려주세요. –

답변

0

을 도울 수있는 당신은 "예기치 않은 파일의 끝을"얻을 오류를 가정합니다. 먼저, if의 세미콜론을 놓치면, if [ ! -d ... ]; then이되어야합니다.

올바르게 기억하면 각 명령은 자체 쉘에서 실행됩니다. 그래서 GitLab은 실행 :

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:[email protected]/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:[email protected]/root/myproject.git /var/www/html 

이 말씀을 (이 디렉터리를 찾을 수 없을 때 [ -d 실패) 디렉토리 검사가 실패하면, git clone을 실행합니다. || 연산자는 명령이 실패 할 경우 쉘이 실행하는 것이며, 명령이 성공할 때 && 연산자가 실행됩니다.

+0

답변 주셔서 감사합니다,하지만 gitlab CI YML 파일을 사용하여 명령을 실행하고 sh 명령을 언급 했으므로 gitlab yml 명령으로 작동하지 않습니다. –

+0

@ Girish Patidar GitLab이 sh를 부르는 한 그것은 내가 의미했던 것입니다. –