Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Travis CI仅从构建脚本上载空文件_Python_Ftp_Travis Ci_Mkdocs - Fatal编程技术网

Python Travis CI仅从构建脚本上载空文件

Python Travis CI仅从构建脚本上载空文件,python,ftp,travis-ci,mkdocs,Python,Ftp,Travis Ci,Mkdocs,我目前正试图在Travis CI上建立一个文档项目。构建脚本使用mkdocs库将标记文件生成为HTML文件。我现在已经尝试了好几个小时使用Travis CI自动化部署过程。它应该直接在Travis CI上生成文件,然后将其上载到FTP服务器 我尝试过的 所以我把这个.travis.yml文件提交给了我的Github repo language: python python: - "2.7" env: global: #FTP_USERNAME - secure: "N9

我目前正试图在Travis CI上建立一个文档项目。构建脚本使用mkdocs库将标记文件生成为HTML文件。我现在已经尝试了好几个小时使用Travis CI自动化部署过程。它应该直接在Travis CI上生成文件,然后将其上载到FTP服务器

我尝试过的

所以我把这个.travis.yml文件提交给了我的Github repo

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服务器时,它将从传输开始,但直到引发超时异常后才结束传输。当我检查服务器上的文件时,它只创建了空文件


也许有人能帮我解释为什么会出现这个问题吗?

我现在在网上发现了一些有趣的东西。他们描述,FTP协议在正常的Travis CI环境中不再受支持。事实上,它在部署中使用不同的NAT,这使得FTP服务器对请求不确定,并且会阻止内容请求

解决方案

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

这可能是它不上载文件的原因,因为它将文件写入FTP服务器已阻止请求的某个位置