2017-01-13 100 views
2

我正在使用lftp來自動化gitlab ci部署。我運行腳本來部署我的代碼,除了需要上傳到其他服務器的「靜態」文件。這裏是我當前代碼的一個示例。自動.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本地目錄:遠程dir其中上傳得走了。大約需要遠程DIR參數護理:
    • 如果它與一條小道(dev-site/)結束,您的當前目錄將在FTP服務器上上傳INSIDE這個目錄
    • ,如果它不與尾端(dev-site),您的當前目錄將被上傳AS這個目錄在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"