未知命令 - LFTP
Unknown Command - LFTP
我在 Gitlab CI 上使用 LFTP 来部署一组文件。我已经在我设置的一台服务器(使用 SFTP 的临时服务器)上很好地工作了。但是,在我客户的服务器上,我似乎无法连接。服务器是使用 FTP 设置的,我必须使用 plain/unsecure 模式通过 Filezilla 进行连接 - 它确实可以连接并且工作正常(尽管我会给出一些使用 SFTP 的建议未来)。
当我尝试通过 .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
任何帮助都会很棒,谢谢!
这是由于密码中的特殊字符所致 - 我的密码以 &
结尾,这导致 lftp 需要不同的命令。为了解决这个问题,我删除了引号并将 &
转义为 |
,如下所示:
PASSWORD_PROD: password\&
我在 Gitlab CI 上使用 LFTP 来部署一组文件。我已经在我设置的一台服务器(使用 SFTP 的临时服务器)上很好地工作了。但是,在我客户的服务器上,我似乎无法连接。服务器是使用 FTP 设置的,我必须使用 plain/unsecure 模式通过 Filezilla 进行连接 - 它确实可以连接并且工作正常(尽管我会给出一些使用 SFTP 的建议未来)。
当我尝试通过 .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
任何帮助都会很棒,谢谢!
这是由于密码中的特殊字符所致 - 我的密码以 &
结尾,这导致 lftp 需要不同的命令。为了解决这个问题,我删除了引号并将 &
转义为 |
,如下所示:
PASSWORD_PROD: password\&