我是GitLab和CI的新手,但我希望通过lftp
从GitLab repo部署到FTP
它转到lftp
并且仍然运行1小时然后返回:
ERROR: Job failed: execution took longer than 1h0m0s seconds
.gitlab-ci.yml
...
deploy:
stage: deploy
image: mwienk/docker-lftp:latest
only:
- dev
script:
- lftp -c "set ftp:ssl-allow no; open -u $FTP_USERNAME,$FTP_PASSWORD -p $FTP_PORT $FTP_HOST; mirror -Rev ./ gitlab --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
...
也尝试了
script:
- apt-get update -qq && apt-get install -y -qq lftp
它的SFTP协议,也许lftp
要求背景上的东西而不是继续?它不会在FTP上传任何内容。有什么建议吗?
答案 0 :(得分:1)
使用SFTP,您应该try with port 22并为主机添加前缀,如下所示:sftp://example.com
lftp调试命令和mirror命令的--verbose标志也是一个非常有用的工具。只需将其包含在脚本中即可,如下所示:
lftp -c "set ftp:ssl-allow no; debug; open -u $FTP_USERNAME,$FTP_PASSWORD -p $FTP_PORT $FTP_HOST; mirror -Rev ./ gitlab --verbose --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
另外,您应该尝试使用以下命令安装lftp: apt-get更新-qq && apt-get安装-y -qq lftp 因为该版本包括用于支持安全连接的库libgnutls。
这是我的设置中使用FTP部署的配置:
.gitlab-ci.yml
...
deploy:
stage: deploy
script:
- apt-get update -qq && apt-get install -y -qq lftp
- lftp -u $FTP_USER,$FTP_PASS $HOST -e "mirror -e -R -p ./dist/ new/ ; quit"
- echo "deployment complete"
# specify environment this job is using
environment:
name: staging
url: http://example.com/new/
# needs artifacts from previous build
dependencies:
- build