我试图在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工作人员的磁盘下载到我的本地磁盘?
答案 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.ymltravis 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。
请注意,工件插件不适用于构建请求请求。