Неизвестная команда - LFTP

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

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

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

Любая помощь была бы замечательной, спасибо!


person 0Neji    schedule 29.12.2016    source источник


Ответы (1)


Это произошло из-за использования специальных символов в пароле - мой пароль заканчивался на &, что заставляло lftp ожидать другую команду. Чтобы исправить это, я удалил кавычки и экранировал & с помощью |, вот так:

PASSWORD_PROD: password\&
person 0Neji    schedule 29.12.2016