是否可以将文件从TravisCI工作人员的文件系统下载到本地磁盘?

时间:2014-08-28 03:27:04

标签: phantomjs travis-ci

我试图在Travis-CI上使用PhantomJS运行视觉差异。测试失败,the following error

test failed
  0.188123 distortion
  Ref:  /tmp/tmpaVuhik/tmpg6uSXl/ref_resized
  Run:  /tmp/tmpaVuhik/tmpg6uSXl/screenshot.png
  Diff: /tmp/tmpaVuhik/tmpg6uSXl/diff.png

视觉上的不同有助于将预期的屏幕截图,实际屏幕截图和感知差异放在Travis工作人员的本地磁盘上的PNG文件中。如果我能看到它们会更棒!

是否可以将文件从Travis工作人员的磁盘下载到我的本地磁盘?

3 个答案:

答案 0 :(得分:3)

您可以使用travis-artifacts上传运行测试所产生的文件。目前它仅支持上传到Amazon S3。

答案 1 :(得分:0)

您可以将人工制品scp到您自己的服务器上。使用商业travis,它们提供了一个私钥,您可以使用它来标识构建(将相应的公钥添加到目标服务器中的authorized_keys)。使用travis-ci.org,你可以用很多的方式做到这一点。

(请在开始之前阅读所有注意事项。)

  • 生成一对公钥 - 私钥。您将使用它来允许Travis构建对自身进行身份验证并授予其访问服务器的权限。

    ssh-keygen -f build_id_rsa -P ''
    
  • 将公钥附加到目标服务器中的authorized_keys。

    $ 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
    
  • 使用ad hoc known_hosts文件登录,生成known_hosts。当被问到时,假设您对指纹感到满意,请输入

    $ ssh -i build_id_rsa -oUserKnownHostsFile=build_known_hosts -oPasswordAuthentication=no user@server
    The authenticity of host [...] can't be established.
    ECDSA key fingerprint is [...]
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'server,[...]' (ECDSA) to the list of known hosts.
    Welcome to [...]
    user@server:~$ exit
    logout
    Connection to server closed.
    
  • 如果您现在重复相同的命令,则可以测试我们是否正确设置了密钥和known_host。这次它应该记录你没有任何问题,既不是确认也不是密码。

    $ ssh -i build_id_rsa -oUserKnownHostsFile=build_known_hosts -oPasswordAuthentication=no user@server
    Welcome to [...]
    user@server:~$ exit
    logout
    Connection to server closed.
    
  • 现在您需要设置构建。您无法直接使用私钥,因为它允许任何人登录目标服务器,因此我们将对该私钥进行simmetrically加密。你可以使用像

    这样的东西
    $ 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_id_rsa.enc和build_known_hosts添加到您的项目中

  • 使用

    将对称密码添加到.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文件系统中写入私钥。有很多方法可能会出现问题并且文件可能会暴露,从而可以访问您的服务器。

答案 2 :(得分:0)

您可以使用Uploading Artifacts on Travis CI

  

Travis CI可以在after_script阶段之后,在作业结束时自动将构建工件上传到Amazon S3。

     

请注意,工件插件不适用于构建请求请求。