Skip to content

Commit

Permalink
add "Database setup" section
Browse files Browse the repository at this point in the history
  • Loading branch information
mislav committed Jul 30, 2011
1 parent fbd8403 commit 957a435
Show file tree
Hide file tree
Showing 14 changed files with 411 additions and 18 deletions.
2 changes: 2 additions & 0 deletions 2011/welcome-to-travis/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ <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>
<li><a href="/docs/user/database-setup/">Database setup</a></li>
<li><a href="/docs/user/status-images/">Status images</a></li>
</ul>
<h2>Developer Docs</h2>
<ul>
Expand Down
2 changes: 2 additions & 0 deletions docs/dev/maintenance/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ <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>
<li><a href="/docs/user/database-setup/">Database setup</a></li>
<li><a href="/docs/user/status-images/">Status images</a></li>
</ul>
<h2>Developer Docs</h2>
<ul>
Expand Down
2 changes: 2 additions & 0 deletions docs/dev/worker/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,8 @@ <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>
<li><a href="/docs/user/database-setup/">Database setup</a></li>
<li><a href="/docs/user/status-images/">Status images</a></li>
</ul>
<h2>Developer Docs</h2>
<ul>
Expand Down
10 changes: 6 additions & 4 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ <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>
<li><a href="/docs/user/status-images/">Status Images</a></li>
<li><a href="/docs/user/build-configuration/">Build configuration</a></li>
<li><a href="/docs/user/database-setup/">Database setup</a></li>
<li><a href="/docs/user/status-images/">Status images</a></li>
</ul>

<h3 id="developer-documentation">Developer documentation</h3>
Expand All @@ -56,8 +57,9 @@ <h2>Contact</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>
<li><a href="/docs/user/status-images/">Status Images</a></li>
<li><a href="/docs/user/build-configuration/">Build configuration</a></li>
<li><a href="/docs/user/database-setup/">Database setup</a></li>
<li><a href="/docs/user/status-images/">Status images</a></li>
</ul>
<h2>Developer Docs</h2>
<ul>
Expand Down
9 changes: 6 additions & 3 deletions docs/user/build-configuration/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ <h3>Set environment variables</h3>
<pre><code>env: DB=postgres
</code></pre>

<p>Environment variables are useful for configuring build scripts. One variable is always present during your builds, <code>TRAVIS</code>:</p>
<p>Environment variables are useful for configuring build scripts. See the example in <a href="/docs/user/database-setup/#multiple-database-systems">Database setup</a>. One variable is always present during your builds, <code>TRAVIS</code>:</p>

<pre><code>if ENV['TRAVIS']
# do something specific to continuous integration
Expand Down Expand Up @@ -133,6 +133,8 @@ <h3>Define a custom build script</h3>

<p>Both settings support multiple scripts, too.</p>

<p>These scripts can be used to setup databases used for testing. For more information, see <a href="/docs/user/database-setup/">Database setup</a>.</p>

<h3>Recipients of email &amp; IRC notification</h3>

<p>You can specify recipients that will be notified about build results.</p>
Expand Down Expand Up @@ -193,8 +195,9 @@ <h2>Contact</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>
<li><a href="/docs/user/status-images/">Status Images</a></li>
<li><a href="/docs/user/build-configuration/">Build configuration</a></li>
<li><a href="/docs/user/database-setup/">Database setup</a></li>
<li><a href="/docs/user/status-images/">Status images</a></li>
</ul>
<h2>Developer Docs</h2>
<ul>
Expand Down
225 changes: 225 additions & 0 deletions docs/user/database-setup/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Travis CI: About - Databases on Travis workers</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>Databases on Travis workers</h2>


<p>Every Travis CI worker has preinstalled software that’s commonly used by the open source developer community. Some of the services available are:</p>

<ul>
<li>databases – MySQL, PostgreSQL, SQLite3, MongoDB</li>
<li>key-value stores – Redis, Riak, memcached</li>
<li>messaging systems – RabbitMQ</li>
<li>node.js, ImageMagick</li>
</ul>

<p>You can find the full list of installed software, as well as Ruby engines and versions, in the <a href="https://github.com/travis-ci/travis-worker/blob/master/config/worker.production.yml">worker
configuration file</a>. That file specifies which <a href="https://github.com/travis-ci/travis-cookbooks">recipes from the cookbook</a> are used while building the worker instance.</p>

<p>Some of these, e.g. node.js and memcached, are either available in the PATH or running on a default port, so no special information about them is required. Others, namely databases, may require authentication.</p>

<p>Here is how to configure your project to use databases in its tests. This assumes you have already visited <a href="/docs/user/build-configuration/">Build configuration</a> documentation.</p>

<h3 id="sqlite3">SQLite3</h3>

<p>Probably the easiest and simplest solution for your relation database needs. If you don’t specifically want to test how your code behaves with other databases, SQLite in memory might be the best and fastest option.</p>

<p>For ruby projects, ensure that you have the sqlite3 ruby bindings in your bundle:</p>

<pre><code># Gemfile
gem 'sqlite3'
</code></pre>

<p>If your project is a Rails app, all you need to set up is:</p>

<pre><code># config/database.yml in Rails
test:
adapter: sqlite3
database: ":memory:"
timeout: 500
</code></pre>

<p>However, if your project is a general library or plugin, you need to handle connecting to the database yourself in tests. For example, connecting with ActiveRecord:</p>

<pre><code>ActiveRecord::Base.establish_connection :adapter =&gt; 'sqlite3',
:database =&gt; ':memory:'
</code></pre>

<h3 id="mysql">MySQL</h3>

<p>MySQL on Travis requires no authentication. Specify an empty username and no password:</p>

<pre><code>mysql:
adapter: mysql2
database: myapp_test
username:
encoding: utf8
</code></pre>

<p>You do have to create the <code>myapp_test</code> database first. Run this as part of your build script:</p>

<pre><code># .travis.yml
before_script:
- "mysql -e 'create database myapp_test;' &gt;/dev/null"
</code></pre>

<h3 id="postgresql">PostgreSQL</h3>

<p>PostgreSQL requires authentication with “postgres” user and no password:</p>

<pre><code>postgres:
adapter: postgresql
database: myapp_test
username: postgres
</code></pre>

<p>You have to create the database as part of your build process:</p>

<pre><code># .travis.yml
before_script:
- "psql -c 'create database myapp_test;' -U postgres &gt;/dev/null"
</code></pre>

<h3 id="mongodb">MongoDB</h3>

<p>MongoDB requires no authentication or database creation up front:</p>

<pre><code>require 'mongo'
Mongo::Connection.new('localhost').db('myapp')
</code></pre>

<p>In cases you need to create users for your database, you can do something like this:</p>

<pre><code># .travis.yml
before_script:
- mongo myapp --eval 'db.addUser("travis", "test");'

# then, in ruby:
uri = "mongodb://travis:test@localhost:27017/myapp"
Mongo::Connection.from_uri(uri)
</code></pre>

<h3 id="multiple-database-systems">Multiple database systems</h3>

<p>If your project’s tests need to run multiple times using different databases, this can be configured on Travis CI in several ways. One approach you might take is put all database configurations in one yaml file:</p>

<pre><code># test/database.yml
sqlite:
adapter: sqlite3
database: ":memory:"
timeout: 500
mysql:
adapter: mysql2
database: myapp_test
username:
encoding: utf8
postgres:
adapter: postgresql
database: myapp_test
username: postgres
</code></pre>

<p>Then, in your test suite, read that data into a configurations hash:</p>

<pre><code>configs = YAML.load_file('test/database.yml')
ActiveRecord::Base.configurations = configs

db_name = ENV['DB'] || 'sqlite'
ActiveRecord::Base.establish_connection(db_name)
ActiveRecord::Base.default_timezone = :utc
</code></pre>

<p>Now you use the “DB” environment variable to specify the name of the database configuration you want to use. Locally, you would run this as:</p>

<pre><code>$ DB=postgres bundle exec rake
</code></pre>

<p>On Travis CI you want to test against all 3 databases all the time, and for that you can use the “env” option:</p>

<pre><code># .travis.yml
env:
- DB=sqlite
- DB=mysql
- DB=postgres
</code></pre>

<p>When doing this, please read and understand everything about the build matrix described in <a href="/docs/user/build-configuration/">Build configuration</a>.</p>

<p>Lastly, make sure that you’re creating mysql and postgres databases in your build script according to the notes earlier in this document.</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>
<li><a href="/docs/user/database-setup/">Database setup</a></li>
<li><a href="/docs/user/status-images/">Status images</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>
11 changes: 9 additions & 2 deletions docs/user/getting-started/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@ <h3>Tweaking your build configuration</h3>

<p>You can configure your build by adding a <code>.travis.yml</code> file to the root of your repository. See <a href="/docs/user/build-configuration/">Build Configuration</a> for details.</p>

<h3>Databases, available infrastructure and more</h3>

<p>A Travis worker comes with a good amount of services you might depend on, including MySQL, PostgreSQL, MongoDB, memcached and others.</p>

<p>See <a href="/docs/user/database-setup/">Database setup</a> to learn how to configure a database connection for your test suite.</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>
Expand All @@ -74,8 +80,9 @@ <h2>Contact</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>
<li><a href="/docs/user/status-images/">Status Images</a></li>
<li><a href="/docs/user/build-configuration/">Build configuration</a></li>
<li><a href="/docs/user/database-setup/">Database setup</a></li>
<li><a href="/docs/user/status-images/">Status images</a></li>
</ul>
<h2>Developer Docs</h2>
<ul>
Expand Down
5 changes: 3 additions & 2 deletions docs/user/status-images/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,9 @@ <h2>Contact</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>
<li><a href="/docs/user/status-images/">Status Images</a></li>
<li><a href="/docs/user/build-configuration/">Build configuration</a></li>
<li><a href="/docs/user/database-setup/">Database setup</a></li>
<li><a href="/docs/user/status-images/">Status images</a></li>
</ul>
<h2>Developer Docs</h2>
<ul>
Expand Down
5 changes: 3 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,9 @@ <h2>Contact</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>
<li><a href="/docs/user/status-images/">Status Images</a></li>
<li><a href="/docs/user/build-configuration/">Build configuration</a></li>
<li><a href="/docs/user/database-setup/">Database setup</a></li>
<li><a href="/docs/user/status-images/">Status images</a></li>
</ul>
<h2>Developer Docs</h2>
<ul>
Expand Down
5 changes: 3 additions & 2 deletions source/content/docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ layout: article
### User documentation

* <a href="/docs/user/getting-started/">Getting started</a>
* <a href="/docs/user/build-configuration/">Build Configuration</a>
* <a href="/docs/user/status-images/">Status Images</a>
* <a href="/docs/user/build-configuration/">Build configuration</a>
* <a href="/docs/user/database-setup/">Database setup</a>
* <a href="/docs/user/status-images/">Status images</a>

### Developer documentation

Expand Down
4 changes: 3 additions & 1 deletion source/content/docs/user/build-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ To specify an environment variable:

env: DB=postgres

Environment variables are useful for configuring build scripts. One variable is always present during your builds, `TRAVIS`:
Environment variables are useful for configuring build scripts. See the example in <a href="/docs/user/database-setup/#multiple-database-systems">Database setup</a>. One variable is always present during your builds, `TRAVIS`:

if ENV['TRAVIS']
# do something specific to continuous integration
Expand Down Expand Up @@ -94,6 +94,8 @@ You can also define scripts to be run before and after the main script:

Both settings support multiple scripts, too.

These scripts can be used to setup databases used for testing. For more information, see <a href="/docs/user/database-setup/">Database setup</a>.

<h3>Recipients of email & IRC notification</h3>

You can specify recipients that will be notified about build results.
Expand Down
Loading

0 comments on commit 957a435

Please sign in to comment.