Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

restructure docs to user docs and dev docs

  • Loading branch information...
commit 48ec3f7190c403829916290842ecad61b5e2b120 1 parent 5136eb7
@svenfuchs svenfuchs authored
View
10 2011/welcome-to-travis/index.html
@@ -47,10 +47,14 @@ <h1 class="riddle"><a href="/" title="Travis">Travis CI</a></h1>
<li><a href="irc://irc.freenode.net#travis">IRC</a></li>
<li><a href="http://groups.google.com/group/travis-ci">Mailinglist</a></li>
</ul>
- <h2>Documentation</h2>
+ <h2>User Docs</h2>
<ul>
- <li><a href="/docs/getting-started/">Getting started</a></li>
- <li><a href="/docs/build-configuration/">Build configuration</a></li>
+ <li><a href="/docs/user/getting-started/">Getting started</a></li>
+ <li><a href="/docs/user/build-configuration/">Build configuration</a></li>
+ </ul>
+ <h2>Developer Docs</h2>
+ <ul>
+ <li><a href="/docs/dev/worker/">The worker</a></li>
</ul>
<h2>Under construction</h2>
<ul>
View
79 docs/dev/maintenance/index.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Travis CI: About - </title>
+ <link rel="stylesheet" type="text/css" href="/style.css" media="screen">
+ </head>
+ <body>
+ <div id="navigation">
+ <div class="wrapper">
+ <a href="http://travis-ci.org" id="logo">travis-ci<span>.org</span></a>
+ <ul>
+ <li><a href="/">Blog</a></li>
+ <li><a href="/docs/">Docs</a></li>
+ <li class="right"><a href="http://travis-ci.org">go to travis-ci.org &rarr;</a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div id="header">
+ <div class="wrapper">
+ <h1 class="riddle"><a href="/" title="Travis">Travis CI</a></h1>
+ <p>An open-source, distributed build system for the Ruby community.</p>
+ </div><!-- /.wrapper -->
+ </div><!-- /#header -->
+
+ <div id="content">
+ <div class="wrapper">
+ <div class="pad">
+ <div id="main">
+
+
+
+
+ </div><!-- /#main -->
+ <div id="sidebar">
+ <h2>Contact</h2>
+ <ul>
+ <li><a href="http://github.com/travis-ci">Github</a></li>
+ <li><a href="http://twitter.com/travisci">Twitter</a></li>
+ <li><a href="irc://irc.freenode.net#travis">IRC</a></li>
+ <li><a href="http://groups.google.com/group/travis-ci">Mailinglist</a></li>
+ </ul>
+ <h2>User Docs</h2>
+ <ul>
+ <li><a href="/docs/user/getting-started/">Getting started</a></li>
+ <li><a href="/docs/user/build-configuration/">Build configuration</a></li>
+ </ul>
+ <h2>Developer Docs</h2>
+ <ul>
+ <li><a href="/docs/dev/worker/">The worker</a></li>
+ </ul>
+ <h2>Under construction</h2>
+ <ul>
+ <li><p>Our site is still under construction. You can help us in: travis#irc.freenode.net</p></li>
+ </ul>
+ </div><!-- /#sidebar -->
+ </div><!-- /.pad -->
+ </div><!-- /.wrapper -->
+ </div><!-- /#content -->
+
+ <div id="footer">
+ <div class="wrapper">
+ <div class="box">
+ <p>This site is maintained by the <a href="http://github.com/travis-ci">Travis CI community</a>. Feel free to <a href="http://github.com/travis-ci/travis-ci.github.com">contribute</a>!</p>
+ </div>
+ <div class="box">
+ <p>This design was kindly provided by the talented Ben Webster of <a href="http://www.plus2.com.au">Plus2</a>.</p>
+ </div>
+ <div class="box last">
+ <ul>
+ <li><a href="http://github.com/travis-ci/travis-ci" title="">View the Source</a></li>
+ <li><a href="http://twitter.com/travisci" title="">Travis CI on Twitter</a></li>
+ </ul>
+ </div><!-- /.box -->
+ </div><!-- /.wrapper -->
+ </div><!-- /#footer -->
+ </body>
+</html>
View
307 docs/dev/worker/index.html
@@ -0,0 +1,307 @@
+<!DOCTYPE HTML>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Travis CI: About - The worker</title>
+ <link rel="stylesheet" type="text/css" href="/style.css" media="screen">
+ </head>
+ <body>
+ <div id="navigation">
+ <div class="wrapper">
+ <a href="http://travis-ci.org" id="logo">travis-ci<span>.org</span></a>
+ <ul>
+ <li><a href="/">Blog</a></li>
+ <li><a href="/docs/">Docs</a></li>
+ <li class="right"><a href="http://travis-ci.org">go to travis-ci.org &rarr;</a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div id="header">
+ <div class="wrapper">
+ <h1 class="riddle"><a href="/" title="Travis">Travis CI</a></h1>
+ <p>An open-source, distributed build system for the Ruby community.</p>
+ </div><!-- /.wrapper -->
+ </div><!-- /#header -->
+
+ <div id="content">
+ <div class="wrapper">
+ <div class="pad">
+ <div id="main">
+
+ <h2>The worker</h2>
+
+
+ <p>Workers consist of the following elements:</p>
+
+<ul>
+ <li>The worker daemon processes which are (currently) based on Resque and execute
+the actual work inside of a VirtualBox VM. These worker processes are managed
+through God.</li>
+ <li>The VirtualBox VMs each of which is permanently assigned to a worker process
+through a unique port setting. These VMs are managed through Vagrant, a Ruby
+wrapper for VirtualBox which provides a commandline interface.</li>
+ <li>The Chef cookbooks which are used to provision the VirtualBox VMs.</li>
+</ul>
+
+<p>There are a few Thor tasks which can be used to perform maintenance tasks, but
+you might need to update files, start workers and/or rebuild or provision VMs
+manually. You can check for existing Thor tasks with <code>thor -T</code>.</p>
+
+<h3 id="vagrant">Vagrant</h3>
+
+<p>Vagrant is as a Ruby wrapper for VirtualBox and it has a command line interface
+which we use for VM management.</p>
+
+<p>Our strategy for building VirtualBox VMs using Vagrant works as follows:</p>
+
+<ul>
+ <li>Optionally reset <em>all</em> VirtualBox settings and VMs, stop all VirtualBox
+daemons.</li>
+ <li>Download <code>lucid32.box</code> to <code>~/travis-worker</code> unless it’s already there.</li>
+ <li>Import <code>lucid32.box</code> as a Vagrant box named <code>base</code>.</li>
+ <li>Boot up and provision a Vagrant VM named “base” based on this box and using
+the cookbooks.</li>
+ <li>Package (export) the provisioned “base” VM to a package named <code>base.box</code>
+stored in <code>~/travis-worker</code>.</li>
+ <li>Import the <code>base.box</code> package as Vagrant boxes <code>worker-1</code>, <code>worker-2</code>, …</li>
+ <li>Boot up Vagrant VMs named <code>worker-1</code>, <code>worker-2</code>, …</li>
+</ul>
+
+<p>Warning: you do <em>not</em> want to reset VirtualBox with our Thor tasks if you are
+using VirtualBox (or Vagrant) for anything else than Travis worker development.
+The respective Thor tasks will always ask you though.</p>
+
+<h3 id="cookbooks">Cookbooks</h3>
+
+<p>The Chef cookbooks are used to provision the VirtualBox VMs. They are managed
+in a <a href="http://github.com/travis-ci/travis-cookbooks">separate repository</a> and
+cloned to <code>vendor/cookbooks</code>.</p>
+
+<h3 id="virtualbox">VirtualBox</h3>
+
+<p>You can use the VirtualBox <code>vboxmanage</code> command line interface to manage
+VirtualBox VMs directly (i.e. without using the Vagrant interface). This is
+sometimes useful for inspecting VM details. Find documentation about <code>vboxmanage</code>
+<a href="http://www.virtualbox.org/manual/ch08.html">here</a>.</p>
+
+<h3 id="sandboxing-builds">Sandboxing builds</h3>
+
+<p>In order to sandbox executing code from userland we use VirtualBox VM snapshots.</p>
+
+<p>Doing so we will roll back everything to the virgin booted state that is the
+result of the provisioning. That means that even git clone’d code and downloaded
+rubygems will be gone after the rollback.</p>
+
+<p>To be more precise here’s what happens:</p>
+
+<ul>
+ <li>The worker gets a build job from the queue.</li>
+ <li>It takes a snapshot from the virgin VM.</li>
+ <li>It git-clones the repository, bundle-installs dependencies and runs the build.</li>
+ <li>It then powers the VM off (equivalent of pulling the power plug).</li>
+ <li>For each existing snapshot it first restores and then deletes it one by one.
+(This is to make sure that in case an uncaught exception has happened all
+snapshots are still restored and deleted).</li>
+ <li>It restarts the VM.</li>
+ <li>The worker is now ready to wait for the next build job.</li>
+</ul>
+
+<h2 id="maintenance">Maintenance</h2>
+
+<h3 id="setting-up-a-new-worker-box">Setting up a new worker box</h3>
+
+<p>Currently needs to be done manually. <span class="help">Automate this if you’d like to help!<span /></span></p>
+
+<p>The box should have a user <code>travis</code> and the following things installed.</p>
+
+<ul>
+ <li>Ubuntu Lucid32 2.6.32 (the exact kernel version matters!)</li>
+ <li>VirtualBox 4.0.10r72479</li>
+ <li>Git</li>
+ <li>Ruby 1.9.2 (preferably using Rvm)</li>
+ <li>Rake, Bundler, God, Vagrant</li>
+</ul>
+
+<p>Install <code>travis-worker</code>:</p>
+
+<ul>
+ <li><code>$ git clone</code> the travis-worker repository to <code>~/travis-worker</code></li>
+ <li><code>$ cd ~/travis-worker</code></li>
+ <li><code>$ cp config/worker.example.yml config/worker.yml</code></li>
+ <li><code>$ bundle install</code></li>
+</ul>
+
+<p>Now edit <code>config/worker.yml</code> according to your requirements. You might also need
+to create a file <code>config/worker.[environment].yml</code> unless it is already there
+for your environment. This (version controlled) file is merged with your (local)
+<code>config/worker.yml</code> file. The latter takes precedence so you can overwrite any
+of the settings in your <code>config/worker.yml</code> file.</p>
+
+<p>You might want to pay special attention to:</p>
+
+<ul>
+ <li>the Redis URL (this is the Redis instance used by the Travis application)</li>
+ <li>the Travis application URL (you need to add your Travis username and token
+here)</li>
+ <li>the number of workers (<code>vms</code>) that will be used (e.g. you might want 1 for
+VM/cookbook development and 5 for staging/production use).</li>
+ <li>the Chef cookbook recipies that will be provisioned to each VM.</li>
+</ul>
+
+<p>That should be all. You can now build the VMs and then start the workers.</p>
+
+<h3 id="re--building-the-worker-vms">(Re-) Building the worker VMs</h3>
+
+<p>Before you start working on VMs you want to stop the workers in production and
+maybe staging! See below for instructions.</p>
+
+<p>You might want to (re-) build all VMs in the following cases:</p>
+
+<ul>
+ <li>You are setting up a new worker server box.</li>
+ <li>There are significant changes to the cookbooks and you want to restart from
+scratch.</li>
+ <li>For some reason VMs are broken or don’t boot and you want to rebuild them.</li>
+</ul>
+
+<p>For (re-) building all worker VMs use the following Thor task:</p>
+
+<pre><code>$ thor travis:worker:vagrant:rebuild
+</code></pre>
+
+<p>Warning: you will be asked if you want to reset the VirtualBox environment
+(including <em>all</em> settings and <em>all</em> existing VMs).</p>
+
+<p>Do <em>not</em> answer <code>yes</code> here if you are using Vagrant/VirtualBox for anything else
+than Travis worker development! If you are using Vagrant/VirtualBox <em>exclusively</em>
+for Travis worker development then you can just always reset VirtualBox (i.e.
+answer <code>yes</code>) with this Thor task.</p>
+
+<h3 id="starting-and-stopping-workers-with-god">Starting and stopping workers with God</h3>
+
+<p>For production/staging use God should be used to manage workers:</p>
+
+<pre><code>$ god -c .worker.god # start up god with the worker configuration file
+$ god [start|stop|restart] workers # start/stop/restart all workers
+$ god [start|stop|restart] worker-1 # start/stop/restart a single worker
+$ god terminate # terminate god and stop all workers
+$ god load .worker.god # reload the configuration
+</code></pre>
+
+<h3 id="starting-a-worker-manually">Starting a worker manually</h3>
+
+<p>For development you might want to run the worker process manually:</p>
+
+<pre><code>$ QUEUE=builds TRAVIS_ENV=development VM=worker-1 VERBOSE=true bundle exec rake resque:work --trace
+</code></pre>
+
+<p>Change the <code>QUEUE</code>, <code>TRAVIS_ENV</code> and <code>VM</code> vars according to your setup.</p>
+
+<h3 id="adding-more-workers">Adding more workers</h3>
+
+<p>If you have started out experimenting with just one worker and VM, are happy
+with things and want to increase the number of workers/VMs now then you can do
+that as follows:</p>
+
+<ul>
+ <li>Edit <code>config/worker.yml</code> and set the number of VMs to the target number.</li>
+ <li>Add the additional Vagrant boxes by running <code>$ thor travis:worker:vagrant:import</code>.
+This will show you an error message for each of the existing boxes that can
+not be overwritten. You can simply ignore these messages.</li>
+ <li>Boot the additional VMs by running <code>$ vagrant up</code>.</li>
+</ul>
+
+<p>Now <code>$ vagrant status</code> should show you the same number of VMs as you’ve specified
+in your <code>config/worker.yml</code> and they should be all running.</p>
+
+<p>You also need to update God with the new configuration and restart the worker
+processes:</p>
+
+<pre><code>$ god load .worker.god
+</code></pre>
+
+<h3 id="reprovisioning-the-worker-vms">Reprovisioning the worker VMs</h3>
+
+<p>Before you start working on VMs you want to stop the workers in production and
+maybe staging! See below for instructions.</p>
+
+<p>With our stategy used for building VMs like described above there are two ways
+to provision cookbook changes to the worker VMs:</p>
+
+<ul>
+ <li>Simply provision the worker VMs</li>
+ <li>Provision the base VM, re-export it to base.box, remove all worker base boxes,
+re-add base.box as new worker base boxes, destroy all VMs, start new worker
+VMs. <span class="help">Automate this if you’d like to help!<span /></span></li>
+</ul>
+
+<p>The first approach provisions on each of your VMs, so if you have 5 VMs it will
+provision 5 times. The second approach only provisions on the base VM and then
+use this state as the base for the worker VMs.</p>
+
+<p>Reprovisioning a VM even without any changes to the cookbooks will take some time
+because various things need to be checked inside of the VM to ensure the
+installation is in sync with the cookbooks.</p>
+
+<p>With 5 VMs and no changes to the cookbooks provisioning might take something
+like 5-10 mins depending on the recipes used. If you are adding 2 more Rubies to
+5 VMs though then this will run for about 100 mins (~10 mins per Ruby * 2 * 5)
+with the first approach, whereas the second approach would only take 20 mins.</p>
+
+<h3 id="stop-workers-before-working-on-vms">Stop workers before working on VMs</h3>
+
+<p>Before you start working on VMs you want to stop the workers in production and
+maybe staging. Here’s how you can do that:</p>
+
+<pre><code>$ thor travis:worker:resque:stop # this will stop the workers but wait for current jobs to be finished (might take a little while)
+$ ps aux | grep resque # check that all worker processes actually have quit (they should!)
+... # work on the VMs
+$ thor travis:worker:resque:start # start the workers
+</code></pre>
+
+ </div><!-- /#main -->
+ <div id="sidebar">
+ <h2>Contact</h2>
+ <ul>
+ <li><a href="http://github.com/travis-ci">Github</a></li>
+ <li><a href="http://twitter.com/travisci">Twitter</a></li>
+ <li><a href="irc://irc.freenode.net#travis">IRC</a></li>
+ <li><a href="http://groups.google.com/group/travis-ci">Mailinglist</a></li>
+ </ul>
+ <h2>User Docs</h2>
+ <ul>
+ <li><a href="/docs/user/getting-started/">Getting started</a></li>
+ <li><a href="/docs/user/build-configuration/">Build configuration</a></li>
+ </ul>
+ <h2>Developer Docs</h2>
+ <ul>
+ <li><a href="/docs/dev/worker/">The worker</a></li>
+ </ul>
+ <h2>Under construction</h2>
+ <ul>
+ <li><p>Our site is still under construction. You can help us in: travis#irc.freenode.net</p></li>
+ </ul>
+ </div><!-- /#sidebar -->
+ </div><!-- /.pad -->
+ </div><!-- /.wrapper -->
+ </div><!-- /#content -->
+
+ <div id="footer">
+ <div class="wrapper">
+ <div class="box">
+ <p>This site is maintained by the <a href="http://github.com/travis-ci">Travis CI community</a>. Feel free to <a href="http://github.com/travis-ci/travis-ci.github.com">contribute</a>!</p>
+ </div>
+ <div class="box">
+ <p>This design was kindly provided by the talented Ben Webster of <a href="http://www.plus2.com.au">Plus2</a>.</p>
+ </div>
+ <div class="box last">
+ <ul>
+ <li><a href="http://github.com/travis-ci/travis-ci" title="">View the Source</a></li>
+ <li><a href="http://twitter.com/travisci" title="">Travis CI on Twitter</a></li>
+ </ul>
+ </div><!-- /.box -->
+ </div><!-- /.wrapper -->
+ </div><!-- /#footer -->
+ </body>
+</html>
View
27 docs/index.html
@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Travis CI: About - Documentation</title>
+ <title>Travis CI: About - </title>
<link rel="stylesheet" type="text/css" href="/style.css" media="screen">
</head>
<body>
@@ -29,19 +29,18 @@ <h1 class="riddle"><a href="/" title="Travis">Travis CI</a></h1>
<div class="pad">
<div id="main">
- <h2>Documentation</h2>
-
- <ul>
- <li><a href="/docs/getting-started/">Getting started</a></li>
- <li><a href="/docs/build-configuration/">Build Configuration</a></li>
+ <h3 id="user-documentation">User documentation</h3>
+
+<ul>
+ <li><a href="/docs/user/getting-started/">Getting started</a></li>
+ <li><a href="/docs/user/build-configuration/">Build Configuration</a></li>
</ul>
-<h2 id="the-worker">The worker</h2>
+<h3 id="developer-documentation">Developer documentation</h3>
<ul>
- <li><a href="/docs/worker/overview/">Overview</a></li>
- <li><a href="/docs/worker/maintenance/">Maintenance</a></li>
+ <li><a href="/docs/dev/worker/">The Worker</a></li>
</ul>
</div><!-- /#main -->
@@ -53,10 +52,14 @@ <h2 id="the-worker">The worker</h2>
<li><a href="irc://irc.freenode.net#travis">IRC</a></li>
<li><a href="http://groups.google.com/group/travis-ci">Mailinglist</a></li>
</ul>
- <h2>Documentation</h2>
+ <h2>User Docs</h2>
+ <ul>
+ <li><a href="/docs/user/getting-started/">Getting started</a></li>
+ <li><a href="/docs/user/build-configuration/">Build configuration</a></li>
+ </ul>
+ <h2>Developer Docs</h2>
<ul>
- <li><a href="/docs/getting-started/">Getting started</a></li>
- <li><a href="/docs/build-configuration/">Build configuration</a></li>
+ <li><a href="/docs/dev/worker/">The worker</a></li>
</ul>
<h2>Under construction</h2>
<ul>
View
202 docs/user/build-configuration/index.html
@@ -0,0 +1,202 @@
+<!DOCTYPE HTML>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Travis CI: About - Build Configuration</title>
+ <link rel="stylesheet" type="text/css" href="/style.css" media="screen">
+ </head>
+ <body>
+ <div id="navigation">
+ <div class="wrapper">
+ <a href="http://travis-ci.org" id="logo">travis-ci<span>.org</span></a>
+ <ul>
+ <li><a href="/">Blog</a></li>
+ <li><a href="/docs/">Docs</a></li>
+ <li class="right"><a href="http://travis-ci.org">go to travis-ci.org &rarr;</a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div id="header">
+ <div class="wrapper">
+ <h1 class="riddle"><a href="/" title="Travis">Travis CI</a></h1>
+ <p>An open-source, distributed build system for the Ruby community.</p>
+ </div><!-- /.wrapper -->
+ </div><!-- /#header -->
+
+ <div id="content">
+ <div class="wrapper">
+ <div class="pad">
+ <div id="main">
+
+ <h2>Build Configuration</h2>
+
+
+ <p>The <code>.travis.yml</code> file in the root of your repo allows you configure your builds. Travis CI will always look for the <code>.travis.yml</code> file that is contained in the SHA/commit that Github has passed.</p>
+
+<p>Below are some of the configuration options and a brief explanation of what is achieved using them.</p>
+
+<h3>Specify a Ruby version</h3>
+
+<p>To specify a particular Ruby version to test against you can do:</p>
+
+<pre><code>rvm: rbx
+</code></pre>
+
+<h3>Specify a Gemfile</h3>
+
+<p>To specify a custom Gemfile variable you can do:</p>
+
+<pre><code>gemfile: gemfiles/Gemfile.ci
+</code></pre>
+
+<h3>Set an environment variable</h3>
+
+<p>To specify a single environment variable you can do:</p>
+
+<pre><code>env: RAILS_ENV=test
+</code></pre>
+
+<h3>Specify a build matrix</h3>
+
+<p>You can also combine the three configuration options above and configure Travis CI to run your tests against a matrix of various configurations. There are 3 matrix dimensions supported:</p>
+
+<ul>
+ <li><code>rvm</code> - specify Ruby versions to test against</li>
+ <li><code>gemfile</code> - specify different dependencies to test against</li>
+ <li><code>env</code> - specify different environment variables to be set, so you can configure various things in your build script based on this</li>
+</ul>
+
+<p>Below is an example configuration for a rather big build matrix that expands to 32 individual builds.</p>
+
+<p>Please take into account that Travis CI is an open source service and we need to rely on worker boxes provided by the community. So please only specify an as big matrix as you actually really need.</p>
+
+<pre><code>rvm:
+ - 1.8.7 # (current default)
+ - 1.9.2
+ - rbx
+ - rbx-2.0
+ - ree
+ - jruby
+ - ruby-head
+ - 1.8.6
+gemfile:
+ - gemfiles/Gemfile.rails-2.3.x
+ - gemfiles/Gemfile.rails-3.0.x
+env:
+ - ISOLATED=true
+ - ISOLATED=false
+</code></pre>
+
+<h3>Define a custom build script</h3>
+
+<p>Define how to run your tests (defaults to <code>bundle exec rake</code> or <code>rake</code> depending on whether you have a <code>Gemfile</code>).</p>
+
+<pre><code>script: "bundle exec rake db:drop db:create db:migrate test"
+</code></pre>
+
+<h3>Set bundler args</h3>
+
+<p>Define tasks to be completed before and after tests run. Will allow folding of content in the frontend view:</p>
+
+<pre><code>before_script: command_1
+after_script: command_2
+</code></pre>
+
+<p>Or:</p>
+
+<pre><code>before_script:
+ - command_1
+ - command_2
+
+after_script:
+ - command_3
+ - command_4
+</code></pre>
+
+<h3>Set bundler args</h3>
+
+<p>Pass arguments to <code>bundle install</code> (see <a href="http://gembundler.com/man/bundle-install.1.html">http://gembundler.com/man/bundle-install.1.html</a>)</p>
+
+<pre><code>bundler_args: --binstubs
+</code></pre>
+
+<h3>Configure recipients for email notification</h3>
+
+<p>You can specify recipients that will be notified about build results.</p>
+
+<pre><code>notifications:
+ recipients:
+ - email-address-1
+ - email-address-2
+</code></pre>
+
+<p>You can also entirely turn off notifications like this:</p>
+
+<pre><code>notifications:
+ disabled: true # Disable email notifications
+</code></pre>
+
+<p>If you do not configure this then Travis CI will notify:</p>
+
+<ul>
+ <li>the commit author and the repository owner (for repositories owned by users)</li>
+ <li>the commit author and all organization members (for repositories owned by organizations)</li>
+</ul>
+
+<h3>Specify branches to build</h3>
+
+<p>You can either white- or blacklist branches that you want to be build by using <code>only</code> or <code>except</code> keys. If you specify both, except will be ignored:</p>
+
+<pre><code>branches:
+ only:
+ - master
+ except:
+ - legacy
+</code></pre>
+
+ </div><!-- /#main -->
+ <div id="sidebar">
+ <h2>Contact</h2>
+ <ul>
+ <li><a href="http://github.com/travis-ci">Github</a></li>
+ <li><a href="http://twitter.com/travisci">Twitter</a></li>
+ <li><a href="irc://irc.freenode.net#travis">IRC</a></li>
+ <li><a href="http://groups.google.com/group/travis-ci">Mailinglist</a></li>
+ </ul>
+ <h2>User Docs</h2>
+ <ul>
+ <li><a href="/docs/user/getting-started/">Getting started</a></li>
+ <li><a href="/docs/user/build-configuration/">Build configuration</a></li>
+ </ul>
+ <h2>Developer Docs</h2>
+ <ul>
+ <li><a href="/docs/dev/worker/">The worker</a></li>
+ </ul>
+ <h2>Under construction</h2>
+ <ul>
+ <li><p>Our site is still under construction. You can help us in: travis#irc.freenode.net</p></li>
+ </ul>
+ </div><!-- /#sidebar -->
+ </div><!-- /.pad -->
+ </div><!-- /.wrapper -->
+ </div><!-- /#content -->
+
+ <div id="footer">
+ <div class="wrapper">
+ <div class="box">
+ <p>This site is maintained by the <a href="http://github.com/travis-ci">Travis CI community</a>. Feel free to <a href="http://github.com/travis-ci/travis-ci.github.com">contribute</a>!</p>
+ </div>
+ <div class="box">
+ <p>This design was kindly provided by the talented Ben Webster of <a href="http://www.plus2.com.au">Plus2</a>.</p>
+ </div>
+ <div class="box last">
+ <ul>
+ <li><a href="http://github.com/travis-ci/travis-ci" title="">View the Source</a></li>
+ <li><a href="http://twitter.com/travisci" title="">Travis CI on Twitter</a></li>
+ </ul>
+ </div><!-- /.box -->
+ </div><!-- /.wrapper -->
+ </div><!-- /#footer -->
+ </body>
+</html>
View
111 docs/user/getting-started/index.html
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Travis CI: About - Getting started</title>
+ <link rel="stylesheet" type="text/css" href="/style.css" media="screen">
+ </head>
+ <body>
+ <div id="navigation">
+ <div class="wrapper">
+ <a href="http://travis-ci.org" id="logo">travis-ci<span>.org</span></a>
+ <ul>
+ <li><a href="/">Blog</a></li>
+ <li><a href="/docs/">Docs</a></li>
+ <li class="right"><a href="http://travis-ci.org">go to travis-ci.org &rarr;</a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div id="header">
+ <div class="wrapper">
+ <h1 class="riddle"><a href="/" title="Travis">Travis CI</a></h1>
+ <p>An open-source, distributed build system for the Ruby community.</p>
+ </div><!-- /.wrapper -->
+ </div><!-- /#header -->
+
+ <div id="content">
+ <div class="wrapper">
+ <div class="pad">
+ <div id="main">
+
+ <h2>Getting started</h2>
+
+
+ <h3>Sign in</h3>
+
+<p>To get started with Travis CI simply sign in through Github oauth (i.e. go to <a href="http://travis-ci.org">Travis CI</a> and click the link on the top right).</p>
+
+<p>Github will ask you for granting read- and write access. Travis CI needs write access for setting up service hooks for your repositories when you request it, but it won’t touch anything else.</p>
+
+<h3>Add service hooks</h3>
+
+<p>Once you’re signed in go to your <a href="http://travis-ci.org/profile">profile page</a>. You’ll see a list of your repositories. Simply click the on/off switch for each repository that you want to hook up on Travis CI.</p>
+
+<p>You can then click on the small wrench icon next to the on/off switch to get to your service hooks page.</p>
+
+<h3>Prepare your build</h3>
+
+<p>In order to build on Travis CI your repository needs to have a Gemfile (unless you do not have <em>any</em> dependencies to install) and a Rakefile with a default test task (unless you specify a different build script in your configuration, see below).</p>
+
+<p>That’s it. Travis CI will run <code>bundle install</code> (if you have a Gemfile) and then <code>rake</code> for you by default.</p>
+
+<h3>Start your build</h3>
+
+<p>To start a build you can either commit and push something to your repository. Or you can go to your service hooks page and click the “Test Hook” button.</p>
+
+<p>That should put a build job into the job queue on <a href="http://travis-ci.org">Travis CI</a> and your build will start as soon as a worker is available.</p>
+
+<h3>Tweaking your build configuration</h3>
+
+<p>You can configure your build by adding a file <code>.travis.yml</code> to your repository. See <a href="/docs/build-configuration/">Build Configuration</a> for details.</p>
+
+<h3>Need help?</h3>
+
+<p>For any kind of questions feel free to join our IRC channel <a href="irc://irc.freenode.net#travis">#travis on irc.freenode.net</a>! We’re there to help :)</p>
+
+ </div><!-- /#main -->
+ <div id="sidebar">
+ <h2>Contact</h2>
+ <ul>
+ <li><a href="http://github.com/travis-ci">Github</a></li>
+ <li><a href="http://twitter.com/travisci">Twitter</a></li>
+ <li><a href="irc://irc.freenode.net#travis">IRC</a></li>
+ <li><a href="http://groups.google.com/group/travis-ci">Mailinglist</a></li>
+ </ul>
+ <h2>User Docs</h2>
+ <ul>
+ <li><a href="/docs/user/getting-started/">Getting started</a></li>
+ <li><a href="/docs/user/build-configuration/">Build configuration</a></li>
+ </ul>
+ <h2>Developer Docs</h2>
+ <ul>
+ <li><a href="/docs/dev/worker/">The worker</a></li>
+ </ul>
+ <h2>Under construction</h2>
+ <ul>
+ <li><p>Our site is still under construction. You can help us in: travis#irc.freenode.net</p></li>
+ </ul>
+ </div><!-- /#sidebar -->
+ </div><!-- /.pad -->
+ </div><!-- /.wrapper -->
+ </div><!-- /#content -->
+
+ <div id="footer">
+ <div class="wrapper">
+ <div class="box">
+ <p>This site is maintained by the <a href="http://github.com/travis-ci">Travis CI community</a>. Feel free to <a href="http://github.com/travis-ci/travis-ci.github.com">contribute</a>!</p>
+ </div>
+ <div class="box">
+ <p>This design was kindly provided by the talented Ben Webster of <a href="http://www.plus2.com.au">Plus2</a>.</p>
+ </div>
+ <div class="box last">
+ <ul>
+ <li><a href="http://github.com/travis-ci/travis-ci" title="">View the Source</a></li>
+ <li><a href="http://twitter.com/travisci" title="">Travis CI on Twitter</a></li>
+ </ul>
+ </div><!-- /.box -->
+ </div><!-- /.wrapper -->
+ </div><!-- /#footer -->
+ </body>
+</html>
View
7 docs/worker/maintenance/index.html
@@ -193,11 +193,16 @@ <h3 id="stop-workers-before-working-on-vms">Stop workers before working on VMs</
<li><a href="irc://irc.freenode.net#travis">IRC</a></li>
<li><a href="http://groups.google.com/group/travis-ci">Mailinglist</a></li>
</ul>
- <h2>Documentation</h2>
+ <h2>User Docs</h2>
<ul>
<li><a href="/docs/getting-started/">Getting started</a></li>
<li><a href="/docs/build-configuration/">Build configuration</a></li>
</ul>
+ <h2>Developer Docs</h2>
+ <ul>
+ <li><a href="/docs/worker/overview/">Worker: overview</a></li>
+ <li><a href="/docs/worker/maintenance/">Worker: maintenance</a></li>
+ </ul>
<h2>Under construction</h2>
<ul>
<li><p>Our site is still under construction. You can help us in: travis#irc.freenode.net</p></li>
View
10 index.html
@@ -47,10 +47,14 @@ <h1 class="riddle"><a href="/" title="Travis">Travis CI</a></h1>
<li><a href="irc://irc.freenode.net#travis">IRC</a></li>
<li><a href="http://groups.google.com/group/travis-ci">Mailinglist</a></li>
</ul>
- <h2>Documentation</h2>
+ <h2>User Docs</h2>
<ul>
- <li><a href="/docs/getting-started/">Getting started</a></li>
- <li><a href="/docs/build-configuration/">Build configuration</a></li>
+ <li><a href="/docs/user/getting-started/">Getting started</a></li>
+ <li><a href="/docs/user/build-configuration/">Build configuration</a></li>
+ </ul>
+ <h2>Developer Docs</h2>
+ <ul>
+ <li><a href="/docs/dev/worker/">The worker</a></li>
</ul>
<h2>Under construction</h2>
<ul>
View
12 source/content/docs.md
@@ -1,13 +1,13 @@
---
-title: Documentation
+title:
kind: article
layout: article
---
+### User documentation
-* <a href="/docs/getting-started/">Getting started</a>
-* <a href="/docs/build-configuration/">Build Configuration</a>
+* <a href="/docs/user/getting-started/">Getting started</a>
+* <a href="/docs/user/build-configuration/">Build Configuration</a>
-## The worker
+### Developer documentation
-* <a href="/docs/worker/overview/">Overview</a>
-* <a href="/docs/worker/maintenance/">Maintenance</a>
+* <a href="/docs/dev/worker/">The Worker</a>
View
0  source/content/docs/dev/maintenance.md
No changes.
View
78 source/content/docs/worker/maintenance.md → source/content/docs/dev/worker.md
@@ -1,4 +1,79 @@
-## The worker: maintenance
+---
+title: The worker
+kind: article
+layout: article
+---
+
+Workers consist of the following elements:
+
+* The worker daemon processes which are (currently) based on Resque and execute
+ the actual work inside of a VirtualBox VM. These worker processes are managed
+ through God.
+* The VirtualBox VMs each of which is permanently assigned to a worker process
+ through a unique port setting. These VMs are managed through Vagrant, a Ruby
+ wrapper for VirtualBox which provides a commandline interface.
+* The Chef cookbooks which are used to provision the VirtualBox VMs.
+
+There are a few Thor tasks which can be used to perform maintenance tasks, but
+you might need to update files, start workers and/or rebuild or provision VMs
+manually. You can check for existing Thor tasks with `thor -T`.
+
+### Vagrant
+
+Vagrant is as a Ruby wrapper for VirtualBox and it has a command line interface
+which we use for VM management.
+
+Our strategy for building VirtualBox VMs using Vagrant works as follows:
+
+* Optionally reset *all* VirtualBox settings and VMs, stop all VirtualBox
+ daemons.
+* Download `lucid32.box` to `~/travis-worker` unless it's already there.
+* Import `lucid32.box` as a Vagrant box named `base`.
+* Boot up and provision a Vagrant VM named "base" based on this box and using
+ the cookbooks.
+* Package (export) the provisioned "base" VM to a package named `base.box`
+ stored in `~/travis-worker`.
+* Import the `base.box` package as Vagrant boxes `worker-1`, `worker-2`, ...
+* Boot up Vagrant VMs named `worker-1`, `worker-2`, ...
+
+Warning: you do *not* want to reset VirtualBox with our Thor tasks if you are
+using VirtualBox (or Vagrant) for anything else than Travis worker development.
+The respective Thor tasks will always ask you though.
+
+### Cookbooks
+
+The Chef cookbooks are used to provision the VirtualBox VMs. They are managed
+in a [separate repository](http://github.com/travis-ci/travis-cookbooks) and
+cloned to `vendor/cookbooks`.
+
+### VirtualBox
+
+You can use the VirtualBox `vboxmanage` command line interface to manage
+VirtualBox VMs directly (i.e. without using the Vagrant interface). This is
+sometimes useful for inspecting VM details. Find documentation about `vboxmanage`
+[here](http://www.virtualbox.org/manual/ch08.html).
+
+### Sandboxing builds
+
+In order to sandbox executing code from userland we use VirtualBox VM snapshots.
+
+Doing so we will roll back everything to the virgin booted state that is the
+result of the provisioning. That means that even git clone'd code and downloaded
+rubygems will be gone after the rollback.
+
+To be more precise here's what happens:
+
+* The worker gets a build job from the queue.
+* It takes a snapshot from the virgin VM.
+* It git-clones the repository, bundle-installs dependencies and runs the build.
+* It then powers the VM off (equivalent of pulling the power plug).
+* For each existing snapshot it first restores and then deletes it one by one.
+ (This is to make sure that in case an uncaught exception has happened all
+ snapshots are still restored and deleted).
+* It restarts the VM.
+* The worker is now ready to wait for the next build job.
+
+## Maintenance
### Setting up a new worker box
@@ -134,3 +209,4 @@ maybe staging. Here's how you can do that:
... # work on the VMs
$ thor travis:worker:resque:start # start the workers
+
View
0  source/content/docs/build-configuration.md → source/content/docs/user/build-configuration.md
File renamed without changes
View
0  source/content/docs/getting-started.md → source/content/docs/user/getting-started.md
File renamed without changes
View
70 source/content/docs/worker/overview.md
@@ -1,70 +0,0 @@
-## The worker: overview
-
-Workers consist of the following elements:
-
-* The worker daemon processes which are (currently) based on Resque and execute
- the actual work inside of a VirtualBox VM. These worker processes are managed
- through God.
-* The VirtualBox VMs each of which is permanently assigned to a worker process
- through a unique port setting. These VMs are managed through Vagrant, a Ruby
- wrapper for VirtualBox which provides a commandline interface.
-* The Chef cookbooks which are used to provision the VirtualBox VMs.
-
-There are a few Thor tasks which can be used to perform maintenance tasks, but
-you might need to update files, start workers and/or rebuild or provision VMs
-manually. You can check for existing Thor tasks with `thor -T`.
-
-### Vagrant
-
-Vagrant is as a Ruby wrapper for VirtualBox and it has a command line interface
-which we use for VM management.
-
-Our strategy for building VirtualBox VMs using Vagrant works as follows:
-
-* Optionally reset *all* VirtualBox settings and VMs, stop all VirtualBox
- daemons.
-* Download `lucid32.box` to `~/travis-worker` unless it's already there.
-* Import `lucid32.box` as a Vagrant box named `base`.
-* Boot up and provision a Vagrant VM named "base" based on this box and using
- the cookbooks.
-* Package (export) the provisioned "base" VM to a package named `base.box`
- stored in `~/travis-worker`.
-* Import the `base.box` package as Vagrant boxes `worker-1`, `worker-2`, ...
-* Boot up Vagrant VMs named `worker-1`, `worker-2`, ...
-
-Warning: you do *not* want to reset VirtualBox with our Thor tasks if you are
-using VirtualBox (or Vagrant) for anything else than Travis worker development.
-The respective Thor tasks will always ask you though.
-
-### Cookbooks
-
-The Chef cookbooks are used to provision the VirtualBox VMs. They are managed
-in a [separate repository](http://github.com/travis-ci/travis-cookbooks) and
-cloned to `vendor/cookbooks`.
-
-### VirtualBox
-
-You can use the VirtualBox `vboxmanage` command line interface to manage
-VirtualBox VMs directly (i.e. without using the Vagrant interface). This is
-sometimes useful for inspecting VM details. Find documentation about `vboxmanage`
-[here](http://www.virtualbox.org/manual/ch08.html).
-
-### Sandboxing builds
-
-In order to sandbox executing code from userland we use VirtualBox VM snapshots.
-
-Doing so we will roll back everything to the virgin booted state that is the
-result of the provisioning. That means that even git clone'd code and downloaded
-rubygems will be gone after the rollback.
-
-To be more precise here's what happens:
-
-* The worker gets a build job from the queue.
-* It takes a snapshot from the virgin VM.
-* It git-clones the repository, bundle-installs dependencies and runs the build.
-* It then powers the VM off (equivalent of pulling the power plug).
-* For each existing snapshot it first restores and then deletes it one by one.
- (This is to make sure that in case an uncaught exception has happened all
- snapshots are still restored and deleted).
-* It restarts the VM.
-* The worker is now ready to wait for the next build job.
View
10 source/layouts/default.html
@@ -42,10 +42,14 @@ <h1 class="riddle"><a href="/" title="Travis">Travis CI</a></h1>
<li><a href="irc://irc.freenode.net#travis">IRC</a></li>
<li><a href="http://groups.google.com/group/travis-ci">Mailinglist</a></li>
</ul>
- <h2>Documentation</h2>
+ <h2>User Docs</h2>
<ul>
- <li><a href="/docs/getting-started/">Getting started</a></li>
- <li><a href="/docs/build-configuration/">Build configuration</a></li>
+ <li><a href="/docs/user/getting-started/">Getting started</a></li>
+ <li><a href="/docs/user/build-configuration/">Build configuration</a></li>
+ </ul>
+ <h2>Developer Docs</h2>
+ <ul>
+ <li><a href="/docs/dev/worker/">The worker</a></li>
</ul>
<h2>Under construction</h2>
<ul>
View
BIN  source/tmp/dependencies
Binary file not shown
Please sign in to comment.
Something went wrong with that request. Please try again.