2017-01-13 13 views
2

자동화 된 gitlab ci 배치에 lftp를 사용하고 있습니다. 다른 서버에 업로드해야하는 '정적'파일을 제외하고 스크립트를 실행하여 코드를 배포합니다. 여기 내 현재 코드의 샘플.자동화 된 .gitlab-ci.yml lftp 구성

script: 
- > 
    lftp 
    -e "mirror 
    --exclude ^\.git.* 
    --exclude-glob *.sql 
    --exclude-glob *.sqlite3 
    --exclude-glob *.txt 
    --exclude-glob *.csv 
    --exclude-glob *.pyc 
    --exclude settings.py 
    --exclude migracion/ 
    --exclude static/ 
    --exclude ^Resources/Private/ 
    --exclude \.gitlab-ci.yaml 
    -eRv $CI_PROJECT_DIR /pro/ject/dirs; quit;" 
    sftp://$ACC 

이 작동하지만이 정적 파일을 정적 파일 서버에 수동으로 업로드해야합니다. 모든 정적 폴더에있는 파일 만 가져 오는 스크립트로 나를 도울 수 있습니까? 정적 폴더는 루트 및 다른 폴더 안에있을 수 있습니다. 많은 Thx.

답변

6

당신은 사용할 수 있습니다

lftp -u username,passwd ftp.foobar.cmo \ 
    -e "mirror -e -R -x .git -x static/ -p ./ dev-site ; quit" 

경우, 거울 :

  • -e을 : 파일을 제거하는 존재하지 않는 이상
  • -R : 당신은 서버를 FTP로 로컬 컴퓨터에서 업로드 의미
  • -x : 제외 할 디렉토리를 지정하십시오.
  • ./을 병렬화 : 하나 -x
  • -p보다 더 당신은 할 수 업로드가 가야 원격 디렉토리 : 로컬 디렉토리 당신은
  • dev-site을 업로드 할 수 있습니다. 원격 디렉토리 매개 변수에 대한주의 :이 흔적 (dev-site/)로 끝나는 경우, 현재 디렉토리가 FTP 서버에 INSIDE이 디렉토리를 업로드됩니다
    • 이 흔적으로 끝나지 않는 경우 (dev-site), 현재 디렉토리가 FTP 서버에로이 디렉토리를 을 업로드됩니다

이 행해져 Yout 여기에, 난을 정적으로 생성 된 문서를 업로드 할 GitLab CI와 함께이를 사용하는 경우 예 .gitlab-ci.ymlmkdocs + lftp :

# Build static html site with mkdocs : 
build: 
    stage: build 
    script: 
    - mkdocs build 
# first upload, exclude static files: 
    - lftp -u ftp_username,$FTP_PASSWORD ftp.foobar.org -e "mirror -x static -R -p site dev ; quit" 
# upload only static to other server: 
- lftp -u ftp_username,$FTP_PASSWORD ftp.otherserv.org -e "mirror -R -p static/ remote/dir ; quit"