0

我目前正在尝试在 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 服务器时,它会开始传输,但直到抛出超时异常才会结束。当我检查服务器上的文件时,它只创建了空文件。

也许有人可以帮助我为什么会出现这个问题?

4

1 回答 1

0

我现在在Travis CI 博客上发现了一些有趣的东西。他们描述的是,普通的 Travis CI 环境不再支持 FTP 协议。它在部署中使用不同的 NAT 的事实使 FTP 服务器不确定请求,它会阻止内容请求。

解决方案

因此,您必须使用 SFTP 或 VPN 连接到您的 FTP 服务器才能在 Travis CI 上部署文件。但也有很多其他 CI/CD 解决方案。我个人现在使用 Github Actions,效果很好。甚至还有一个FTP 上传模块。

这可能是它不上传文件的原因,因为它将文件写入 FTP 服务器已经阻止请求的地方。

于 2019-10-17T20:51:33.310 回答