我目前正在尝试在Travis CI上建立一个文档项目。构建脚本使用mkdocs库将markdown文件生成为HTML文件。我现在已经尝试了许多小时才能使用Travis CI自动执行部署过程。它应该直接在Travis CI上生成文件,然后将其上传到FTP服务器。
我尝试过的事情
所以我已经将此.travis.yml文件提交到我的Github存储库。
language: python
python:
- "2.7"
env:
global:
#FTP_USERNAME
- secure: "N9knL6LsuiZ....."
#FTP_PASSWORD
- secure: "NrRpwCeay7Y0s....."
install:
- pip install mkdocs
- mkdocs --version
script:
- mkdocs build
after_success:
- find documentation -type f -exec curl -u "${FTP_USERNAME}:${FTP_PASSWORD}" --verbose --progress-bar --ftp-create-dirs --max-time 30 -T {} ftp://my.ftp-server.com/{} \;
mkdocs构建脚本不会将生成的文件输出到根文件夹“ documentation”中。实际上,除非FTP服务器上的目录不存在,否则此代码有效。
什么不起作用
我在本地尝试了相同的代码(只是运行after_success命令),并且在那里正确上传了包含内容的文件。当Travis-CI现在开始将文件上传到我的FTP服务器时,它以传输开始,但直到抛出超时异常才结束传输。当我检查服务器上的文件时,它仅创建了空文件。
也许有人可以帮助我为什么会出现此问题?
我现在在Travis CI Blog上发现了一些有趣的东西。他们描述的是,普通Travis CI环境不再支持FTP协议。它在部署中使用不同的NAT的事实使FTP服务器不确定请求,并且将阻止内容请求。
解决方案>>
因此,必须在FTP服务器上使用SFTP或VPN连接,才能在Travis CI上部署文件。但是,还有许多其他CI / CD解决方案。我现在个人使用Github Actions,效果很好。甚至还有一个FTP Upload模块。
这可能是它不上传文件的原因,因为它将文件写入FTP服务器已经阻止了该请求的位置。