Phantomjs 是否可以从TravisCI worker下载文件';s文件系统到本地磁盘?
我正在尝试在Travis CI上使用PhantomJS运行视觉差异。测试失败,原因是: VisualDifference已将预期屏幕截图、实际屏幕截图和PNG文件中的感知差异有效地放置在Travis worker的本地磁盘上。如果我能看到他们就好了Phantomjs 是否可以从TravisCI worker下载文件';s文件系统到本地磁盘?,phantomjs,travis-ci,Phantomjs,Travis Ci,我正在尝试在Travis CI上使用PhantomJS运行视觉差异。测试失败,原因是: VisualDifference已将预期屏幕截图、实际屏幕截图和PNG文件中的感知差异有效地放置在Travis worker的本地磁盘上。如果我能看到他们就好了 是否可以将文件从Travis worker的磁盘下载到我的本地磁盘?您可以用于上载运行测试生成的文件。目前,它只支持上传到Amazon S3。您可以将人工制品scp到您自己的服务器上。使用commercial travis,它们提供了一个私钥,您可以
是否可以将文件从Travis worker的磁盘下载到我的本地磁盘?您可以用于上载运行测试生成的文件。目前,它只支持上传到Amazon S3。您可以将人工制品scp到您自己的服务器上。使用commercial travis,它们提供了一个私钥,您可以使用该私钥来标识构建(将相应的公钥添加到目标服务器中的授权密钥中)。有了travis-ci.org,你可以用一种更加狡猾的方式来做这件事 (开始前,请仔细阅读所有内容,直至注意事项。)
- 生成一对公私密钥。您将使用它来允许Travis构建本身进行身份验证,并允许它访问您的服务器
ssh-keygen -f build_id_rsa -P ''
- 将公钥附加到目标服务器中的授权密钥
$ scp build_id_rsa.pub user@server:. user@sever's password: build_id_rsa.pub $ ssh user@server [...] $ mkdir .ssh $ cat build_id_rsa.pub >>.ssh/authorized_keys $ exit
- 通过使用特定的已知\u主机文件登录来生成已知的\u主机。当被询问时,假设您对指纹满意,请输入yes
- 如果您现在重复相同的命令,您可以测试我们是否正确设置了密钥和已知的\u主机。这一次,它应该让你在没有任何问题的情况下登录,无论是确认还是密码
$ ssh -i build_id_rsa -oUserKnownHostsFile=build_known_hosts -oPasswordAuthentication=no user@server Welcome to [...] user@server:~$ exit logout Connection to server closed.
- 现在您需要设置构建。您不能直接使用私钥,因为它允许任何人登录到目标服务器,因此我们将简单地加密私钥。你可以用像
$ openssl enc -aes-256-cbc -salt -in build_id_rsa -out build_id_rsa.enc enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password:
- 将build\u id\u rsa.enc和build\u known\u主机添加到项目中
- 使用将对称密码添加到.travis.yml
所以你应该travis encrypt 'PASS=yoursymmetricpassword' --add
添加到您的.travis.ymlenv: global: - secure: [...]
- 现在修改您的.travis.yml以上载这些人工制品
before_script: - openssl aes-256-cbc -d -pass env:PASS -in build_id_rsa.enc -out build_id_rsa ; chmod 600 build_id_rsa script: - if [[ "$TRAVIS_PULL_REQUEST" == 'false' && "$TRAVIS_BRANCH" == 'master' ]] ; then your_build && scp -q -i build_id_rsa -oPasswordAuthentication=no -oUserKnownHostsFile=build_known_hosts artefact user@server:path/ ; else ; your_build ; fi after_script: - rm -rf build_id_rsa
注意事项:请确保您理解所有步骤,因为我可能犯了一些错误,而且机制不是超级安全的:包括在构建期间在Travis VM文件系统中写入私钥。有很多种方式可能会出现问题,文件可能会被暴露,从而访问您的服务器。这似乎是最简单的通用解决方案。实际上,因为我的构建工件都是图像,所以我添加了一个--imgur标志,将它们上传到imgur.com:
ssh-keygen -f build_id_rsa -P ''
before_script:
- openssl aes-256-cbc -d -pass env:PASS -in build_id_rsa.enc -out build_id_rsa ; chmod 600 build_id_rsa
script:
- if [[ "$TRAVIS_PULL_REQUEST" == 'false' && "$TRAVIS_BRANCH" == 'master' ]] ; then your_build && scp -q -i build_id_rsa -oPasswordAuthentication=no -oUserKnownHostsFile=build_known_hosts artefact user@server:path/ ; else ; your_build ; fi
after_script:
- rm -rf build_id_rsa