我目前正在使用Flask开发一个Web应用程序,并且需要在其中一个测试中使用PhantomJS。我将GitLab用于远程git存储库,并使用GitLab CI作为CI工具。
不幸的是,我似乎无法获得GitLab CI的共享跑步者来安装和运行PhantomJS。它的输出:
Failed PhantomJS Run Screenshot
我的.gitlab-ci.yml
:
image: python:2.7.11
before_script:
- ...
- mkdir ~/tmp
- pushd ~/tmp
- wget https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2
- tar xf $PHANTOM_JS.tar.bz2
- mv $PHANTOM_JS phantomjs
- ln -s ~/tmp/phantomjs/bin/phantomjs /usr/bin/phantomjs
- phantomjs --version
- popd
- ...
$Phantom_JS
指的是PhantomJS的特定版本。
有谁知道解决方案?或者有没有其他方法来安装和运行PhantomJS?
谢谢。
答案 0 :(得分:2)
似乎是我自己的错误。我之前没有发现Gitlab CI是在64位机器上构建的。我下载了32位版本,不知怎样对跑步者不起作用。
答案 1 :(得分:1)
我在ruby图像Dockerfile中做了类似的事情,并且可以确认有时它不会下载预期的zip文件。
RUN cd /tmp && \
curl -OL https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 && \
tar xjf phantomjs-1.9.8-linux-x86_64.tar.bz2 phantomjs-1.9.8-linux-x86_64/bin/phantomjs && \
mv phantomjs-1.9.8-linux-x86_64/bin/phantomjs /usr/local/bin && \
rm -r phantomjs-1.9.8-linux-x86_64*
据我所知,bitbucket网址重定向到经过身份验证的S3网址,有时是404网址。
我已经使用docker run -it IMAGE /bin/bash
在本地运行图片,并在每次构建之后验证是否使用which phantomjs
和phantomjs --version
安装了phantomjs。如果安装没有成功,我会再次构建容器。
我注意到在浏览器中点击下载URL(将在本地下载文件)在运行容器构建之前,增加了成功的可能性。我很乐意看到一个“更好”的解决方案。