Phantomjs 是否可以从TravisCI worker下载文件';s文件系统到本地磁盘?

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 CI上使用PhantomJS运行视觉差异。测试失败,原因是:

VisualDifference已将预期屏幕截图、实际屏幕截图和PNG文件中的感知差异有效地放置在Travis worker的本地磁盘上。如果我能看到他们就好了


是否可以将文件从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
    
    所以你应该

    env:
      global:
      - secure: [...]
    
    添加到您的.travis.yml

  • 现在修改您的.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