2016-12-29 127 views
1

我在Gitlab CI上使用LFTP來部署一組文件。我已經很好地在我設置的一臺服務器上運行(使用SFTP的臨時服務器)。但是,在我客戶的服務器上,我似乎無法連接。服務器使用FTP進行設置,我必須使用普通/不安全模式通過Filezilla進行連接 - 它連接並工作正常(儘管我將在未來使用SFTP提供一些建議)。未知命令 - LFTP

當我嘗試通過.gitlab-ci.yml文件我得到以下錯誤做使用LFTP相同:

Unknown command `ftp.example.com'. 
mirror: Not connected 
ERROR: Build failed: exit code 1 

我懷疑,這是因爲使用普通的FTP,但我已經試過更改主機,將ftp://面向主機和其他一些使用set的命令,但沒有運氣。

這裏是我的.gitlab-ci.yml文件(編輯後的版本):

stages: 
    - build-staging 
    - build-production 

variables: 
    EXCLUDE: "--exclude '.htaccess' --exclude-glob .git* --exclude '.git/' --exclude 'wp-config.php'" 
    SOURCE_DIR: "./" 

    # STAGING 
    DEST_DIR: "/" 
    HOST_STAGING: "sftp://123.456.789" 
    USERNAME_STAGING: "user" 
    PASSWORD_STAGING: "password" 

    # PRODUCTION 
    DEST_DIR_PROD: "/" 
    HOST_PROD: "ftp.example.com" 
    USERNAME_PROD: "user" 
    PASSWORD_PROD: "password" 

job1: 
    stage: build-staging 
    environment: staging 
    script: 
    - apt-get update -qq && apt-get install -y -qq lftp 
    - echo "Deploying" 
    - lftp -c "set ftp:ssl-allow no; set sftp:auto-confirm yes; open -u $USERNAME_STAGING,$PASSWORD_STAGING $HOST_STAGING; mirror -Rv --ignore-time --parallel=10 $EXCLUDE $SOURCE_DIR $DEST_DIR_STAGING" 
    only: 
    - staging 
    tags: 
    - 2gb 

job2: 
    stage: build-production 
    environment: production 
    when: manual 
    script: 
    - apt-get update -qq && apt-get install -y -qq lftp 
    - echo "Deploying" 
    - lftp -c "set ftp:ssl-allow no; open -u $USERNAME_PROD,$PASSWORD_PROD $HOST_PROD; mirror -Rv --ignore-time --parallel=10 $EXCLUDE $SOURCE_DIR $DEST_DIR_PROD" 
    only: 
    - production 
    tags: 
    - 2gb 

任何幫助將是巨大的,謝謝!

回答

2

這是由於密碼中的特殊字符 - 我的密碼以&結尾,這導致lftp預期不同的命令。爲了解決這個問題,我刪除了引號,並用|跳過了&,如下所示:

PASSWORD_PROD: password\&