2016-12-29 5 views
1

Я использую LFTP на Gitlab CI для развертывания набора файлов. У меня это хорошо работает на одном сервере, который я настроил (промежуточном сервере, использующем SFTP). Однако на сервере моего клиента я не могу подключиться. Сервер настроен с использованием FTP, и я должен использовать простой/небезопасный режим для подключения через Filezilla - он действительно работает и работает нормально (хотя я буду давать некоторые рекомендации по использованию SFTP в будущем).Неизвестная команда - LFTP

Когда я пытаюсь сделать то же самое с помощью LFTP через файл .gitlab-ci.yml я получаю следующее сообщение об ошибке:

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

Я подозреваю, что это из-за использования обычного FTP, но я пытался меняя хосты, ставя ftp:// infront хоста и несколько других команд, используя 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\& 
Смежные вопросы