This bot is used by pdf.js reviewers to run regression tests. The bot lives in server.js
and requires node.js. See instructions below on how to set it up.
Performing regression test
- User submits pull request to main repo
- Reviewer leaves comment
@pdfjsbot test
@pdfjsbot
clones repo of requester; checks out top SHA of pull request; pullspdf.js-ref
repo containing snapshots; runsmake test
in requester repo; and comments back with the results of test
Generating reference snapshots
- User submits pull request to main repo containing new features
- Reviewer leaves comment
@pdfjsbot makeref
@pdfjsbot
clones repo of requester; checks out top SHA of pull request; runsmake master
in requester repo; and (force-)pushes snapshots topdf.js-ref
repo
Logging into EC2
To log into the server:
$ ssh -i <ssh_key_file.pem> ubuntu@<ec2_machine_address>
The two unknowns above should be known by the bot collaborators.
Log file
This is the first place to take a peek at:
/tmp/bot.log
(TODO: place file in /var/log
and configure logrotate
)
Updating and restarting bot
There's a script for that:
$ cd pdf.js-bot/
$ ./update
Restarting bot
$ cd pdf.js-bot/
$ forever stop 0
$ forever start -o /tmp/bot.log server.js
And cross your fingers :)
Distro and basics
The instructions below assume we'll be deploying on Ubuntu 11.04. See http://alestic.com/ for a list of EC2 images.
$ sudo apt-get update
- Install via apt-get:
make
,g++
Browser, Xvfb
-
Install via apt-get:
firefox
,xvfb
(necessary as we will run browsers without a display) -
Test
xvfb
via$ xvfb-run firefox
. Firefox shouldn't bail out with a no-display message. -
Configure
xvfb
by appending to/etc/profile
:/usr/bin/Xvfb :1 1>/dev/null 2>/dev/null & export DISPLAY=:1
Git, Github
-
Install via apt-get:
git
-
Create Github ssh key in
~/.ssh
:$ ssh-keygen -t rsa -C "pdfjsbot@gmail.com"
-
DO NOT ADD AN SSH PASSWORD TO THE KEY. This requires setting up
ssh-agent
and a password prompt upon every boot. -
Log into Github as @pdfjsbot, add public ssh key from file
~/.ssh/id_rsa.pub
-
Test ssh key:
$ ssh -T git@github.com
-
Set up ssh agent to avoid repeated password entry:
$ exec ssh-agent bash
,$ ssh-add ~/.ssh/id_rsa
-
Configure git signatures:
$ git config --global user.name "pdfjs bot"
,git config --global user.email "pdfjsbot@gmail.com"
-
Set Github API credentials by appending to
/etc/profile
:export GITHUB_CREDENTIALS=pdfjsbot:<password_here>
-
Run
$ /etc/profile
, or$ sudo reboot
to effect profile changes
Node.js
- Install
nodejs
andnodejs-dev
from binaries: https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager - Make sure
nodejs-dev
andg++
are installed before proceeding! - Install node.js package manager npm:
$ curl http://npmjs.org/install.sh | sudo sh
- Install global node utility forever:
$ sudo npm install -g forever
Bot
- Clone repo into home dir:
$ git clone <pdf.js-bot-URL>
- Install required node packages:
$ cd pdf.js-bot; npm install
- Configure browser manifest file:
test-files/browser_manifest.json
Launch: Production
- Check if default parameters are OK:
config.json
- Start bot with
$ forever start -o /tmp/bot.log server.js
- (You can stop server with
$ forever stop 0
)
Launch: Staging
(Use this for local tests)
- Configure parameters for your own tests in:
config_staging.json
- Set environment variable
$ export PDFJSBOT_STAGING=yes
- Start bot with
$ node server.js