Name Last Update
config Loading commit data...
files Loading commit data...
package-scripts Loading commit data...
.gitignore Loading commit data...
Berksfile Loading commit data...
Gemfile Loading commit data...
Gemfile.lock Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...
Vagrantfile Loading commit data...
omnibus.rb.example Loading commit data...

README.md

GitLab Omnibus project

This project creates full-stack platform-specific packages for GitLab!

Installation

Ubuntu

sudo apt-get install openssh-server
sudo apt-get install postfix # sendmail or exim is also OK
sudo dpkg -i gitlab-x.y.z.deb # this is the .deb you downloaded
sudo gitlab-ctl reconfigure

How to manage an Omnibus-installed GitLab

Administrative commands

You can make configuration changes by editing /etc/gitlab/gitlab.rb and /etc/gitlab/gitlab-secrets.json, followed by running

sudo gitlab-ctl reconfigure

To start/stop a component of GitLab run e.g. sudo gitlab-ctl stop sidekiq. To permanently disable e.g. Sidekiq, add sidekiq['enable'] = false to /etc/gitlab/gitlab.rb, and run sudo gitlab-ctl reconfigure for the change to take effect.

To invoke a GitLab rake task, use gitlab-rake. For example:

sudo gitlab-rake gitlab:backup:create

There is no need to change the user or the RAILS_ENV environment variable; this is taken care of by the gitlab-rake wrapper script.

Directory structure

Omnibus-gitlab uses four different directories.

  • /opt/gitlab holds application code for GitLab and its dependencies.
  • /var/opt/gitlab holds application data and configuration files that gitlab-ctl reconfigure writes too.
  • /etc/gitlab holds configuration files for omnibus-gitlab. These are the only files that you should ever have to edit manually.
  • /var/log/gitlab contains all log data generated by components of omnibus-gitlab.

Preparing a build environment

To create builds you will need a build user (omnibus-build:omnibus-build in our example). Preparing the build machine requires sudo access.

Ubuntu 12.04

# Install dependencies
sudo apt-get install ruby1.9.1 ruby1.9.1-dev git build-essential
sudo gem install --no-ri --no-rdoc bundler

# Create build directories for use by the build user
sudo mkdir -p /opt/gitlab /var/cache/omnibus
# We assume the build user and group is 'omnibus-build'
sudo chown omnibus-build:omnibus-build /opt/gitlab /var/cache/omnibus

Then, as the build user (omnibus-build):

# Clone the omnibus repo
git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git

# Install gem dependencies for omnibus-ruby
cd omnibus-gitlab
bundle install --path .bundle --binstubs

# Do a build (and take a break from the computer)
bin/omnibus build project gitlab

Centos 6.5

sudo yum groupinstall 'Development Tools'
# Install RedHat Software Collections to get Ruby 1.9.3
sudo yum install centos-release-SCL
sudo yum install ruby193 ruby193-ruby-devel

# Create build directories for use by the build user
sudo mkdir -p /opt/gitlab /var/cache/omnibus
# We assume the build user and group is 'omnibus-build'
sudo chown omnibus-build:omnibus-build /opt/gitlab /var/cache/omnibus

As the build user (omnibus-build):

# Enable Ruby 1.9.3 from Software Collections
echo 'exec scl enable ruby193 bash' >> .bash_profile
# Start a new login shell so we do not have to log out and in
# this one time
bash --login

# Clone the omnibus repo
git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git

# Install gem dependencies for omnibus-ruby
cd omnibus-gitlab
bundle install --path .bundle --binstubs

# Do a build (and take a break from the computer)
bin/omnibus build project gitlab

Usage

Build

You create a platform-specific package using the build project command:

$ bin/omnibus build project gitlab

The platform/architecture type of the package created will match the platform where the build project command is invoked. So running this command on say a MacBook Pro will generate a Mac OS X specific package. After the build completes packages will be available in pkg/.

Clean

You can clean up all temporary files generated during the build process with the clean command:

$ bin/omnibus clean

Adding the --purge purge option removes ALL files generated during the build including the project install directory (/opt/gitlab) and the package cache directory (/var/cache/omnibus/pkg):

$ bin/omnibus clean --purge

Help

Full help for the Omnibus command line interface can be accessed with the help command:

$ bin/omnibus help

Vagrant-based Virtualized Build Lab

Every Omnibus project ships will a project-specific Berksfile and Vagrantfile that will allow you to build your projects on the following platforms:

  • CentOS 5 64-bit
  • CentOS 6 64-bit
  • Ubuntu 10.04 64-bit
  • Ubuntu 11.04 64-bit
  • Ubuntu 12.04 64-bit

Please note this build-lab is only meant to get you up and running quickly; there's nothing inherent in Omnibus that restricts you to just building CentOS or Ubuntu packages. See the Vagrantfile to add new platforms to your build lab.

The only requirements for standing up this virtualized build lab are:

The vagrant-berkshelf and vagrant-omnibus Vagrant plugins are also required and can be installed easily with the following commands:

$ vagrant plugin install vagrant-berkshelf
$ vagrant plugin install vagrant-omnibus

Once the pre-requisites are installed you can build your package across all platforms with the following command:

$ vagrant up

If you would like to build a package for a single platform the command looks like this:

$ vagrant up PLATFORM

The complete list of valid platform names can be viewed with the vagrant status command.