Initial commit
This commit is contained in:
commit
763da991e7
|
@ -0,0 +1,8 @@
|
||||||
|
*.gem
|
||||||
|
.bundle
|
||||||
|
vendor/bundle
|
||||||
|
pkg/*
|
||||||
|
.vagrant
|
||||||
|
bin/*
|
||||||
|
files/**/cache/
|
||||||
|
vendor/cookbooks
|
|
@ -0,0 +1,4 @@
|
||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem 'omnibus', '~> 1.2.0'
|
||||||
|
gem 'omnibus-software', :git => 'git://github.com/opscode/omnibus-software.git', :branch => 'master'
|
|
@ -0,0 +1,102 @@
|
||||||
|
# gitlab Omnibus project
|
||||||
|
|
||||||
|
This project creates full-stack platform-specific packages for
|
||||||
|
`gitlab`!
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
We'll assume you have Ruby 1.9+ and Bundler installed. First ensure all
|
||||||
|
required gems are installed and ready to use:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ bundle install --binstubs
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
You create a platform-specific package using the `build project` command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ 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:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ 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`):
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ bin/omnibus clean --purge
|
||||||
|
```
|
||||||
|
|
||||||
|
### Help
|
||||||
|
|
||||||
|
Full help for the Omnibus command line interface can be accessed with the
|
||||||
|
`help` command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ bin/omnibus help
|
||||||
|
```
|
||||||
|
|
||||||
|
## Vagrant-based Virtualized Build Lab
|
||||||
|
|
||||||
|
Every Omnibus project ships will a project-specific
|
||||||
|
[Berksfile](http://berkshelf.com/) and [Vagrantfile](http://www.vagrantup.com/)
|
||||||
|
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:
|
||||||
|
|
||||||
|
* VirtualBox - native packages exist for most platforms and can be downloaded
|
||||||
|
from the [VirtualBox downloads page](https://www.virtualbox.org/wiki/Downloads).
|
||||||
|
* Vagrant 1.2.1+ - native packages exist for most platforms and can be downloaded
|
||||||
|
from the [Vagrant downloads page](http://downloads.vagrantup.com/).
|
||||||
|
|
||||||
|
The [vagrant-berkshelf](https://github.com/RiotGames/vagrant-berkshelf) and
|
||||||
|
[vagrant-omnibus](https://github.com/schisamo/vagrant-omnibus) Vagrant plugins
|
||||||
|
are also required and can be installed easily with the following commands:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ 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:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ vagrant up
|
||||||
|
```
|
||||||
|
|
||||||
|
If you would like to build a package for a single platform the command looks like this:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ vagrant up PLATFORM
|
||||||
|
```
|
||||||
|
|
||||||
|
The complete list of valid platform names can be viewed with the
|
||||||
|
`vagrant status` command.
|
|
@ -0,0 +1,95 @@
|
||||||
|
# -*- mode: ruby -*-
|
||||||
|
# vi: set ft=ruby :
|
||||||
|
|
||||||
|
require "vagrant"
|
||||||
|
|
||||||
|
if Vagrant::VERSION < "1.2.1"
|
||||||
|
raise "The Omnibus Build Lab is only compatible with Vagrant 1.2.1+"
|
||||||
|
end
|
||||||
|
|
||||||
|
host_project_path = File.expand_path("..", __FILE__)
|
||||||
|
guest_project_path = "/home/vagrant/#{File.basename(host_project_path)}"
|
||||||
|
project_name = "gitlab"
|
||||||
|
|
||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
|
||||||
|
config.vm.hostname = "#{project_name}-omnibus-build-lab"
|
||||||
|
|
||||||
|
config.vm.define 'ubuntu-10.04' do |c|
|
||||||
|
c.berkshelf.berksfile_path = "./Berksfile"
|
||||||
|
c.vm.box = "opscode-ubuntu-10.04"
|
||||||
|
c.vm.box_url = "http://opscode-vm.s3.amazonaws.com/vagrant/opscode_ubuntu-10.04_chef-11.2.0.box"
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.define 'ubuntu-11.04' do |c|
|
||||||
|
c.berkshelf.berksfile_path = "./Berksfile"
|
||||||
|
c.vm.box = "opscode-ubuntu-11.04"
|
||||||
|
c.vm.box_url = "http://opscode-vm.s3.amazonaws.com/vagrant/boxes/opscode-ubuntu-11.04.box"
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.define 'ubuntu-12.04' do |c|
|
||||||
|
c.berkshelf.berksfile_path = "./Berksfile"
|
||||||
|
c.vm.box = "canonical-ubuntu-12.04"
|
||||||
|
c.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box"
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.define 'centos-5' do |c|
|
||||||
|
c.berkshelf.berksfile_path = "./Berksfile"
|
||||||
|
c.vm.box = "opscode-centos-5.8"
|
||||||
|
c.vm.box_url = "http://opscode-vm.s3.amazonaws.com/vagrant/opscode_centos-5.8_chef-11.2.0.box"
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.define 'centos-6' do |c|
|
||||||
|
c.berkshelf.berksfile_path = "./Berksfile"
|
||||||
|
c.vm.box = "opscode-centos-6.3"
|
||||||
|
c.vm.box_url = "http://opscode-vm.s3.amazonaws.com/vagrant/opscode_centos-6.3_chef-11.2.0.box"
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.provider :virtualbox do |vb|
|
||||||
|
# Give enough horsepower to build without taking all day.
|
||||||
|
vb.customize [
|
||||||
|
"modifyvm", :id,
|
||||||
|
"--memory", "1536",
|
||||||
|
"--cpus", "2"
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Ensure a recent version of the Chef Omnibus packages are installed
|
||||||
|
config.omnibus.chef_version = :latest
|
||||||
|
|
||||||
|
# Enable the berkshelf-vagrant plugin
|
||||||
|
config.berkshelf.enabled = true
|
||||||
|
# The path to the Berksfile to use with Vagrant Berkshelf
|
||||||
|
config.berkshelf.berksfile_path = "./Berksfile"
|
||||||
|
|
||||||
|
config.ssh.max_tries = 40
|
||||||
|
config.ssh.timeout = 120
|
||||||
|
config.ssh.forward_agent = true
|
||||||
|
|
||||||
|
host_project_path = File.expand_path("..", __FILE__)
|
||||||
|
guest_project_path = "/home/vagrant/#{File.basename(host_project_path)}"
|
||||||
|
|
||||||
|
config.vm.synced_folder host_project_path, guest_project_path
|
||||||
|
|
||||||
|
# prepare VM to be an Omnibus builder
|
||||||
|
config.vm.provision :chef_solo do |chef|
|
||||||
|
chef.json = {
|
||||||
|
"omnibus" => {
|
||||||
|
"build_user" => "vagrant",
|
||||||
|
"build_dir" => guest_project_path,
|
||||||
|
"install_dir" => "/opt/#{project_name}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
chef.run_list = [
|
||||||
|
"recipe[omnibus::default]"
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.provision :shell, :inline => <<-OMNIBUS_BUILD
|
||||||
|
export PATH=/usr/local/bin:$PATH
|
||||||
|
cd #{guest_project_path}
|
||||||
|
su vagrant -c "bundle install --binstubs"
|
||||||
|
su vagrant -c "bin/omnibus build project #{project_name}"
|
||||||
|
OMNIBUS_BUILD
|
||||||
|
end
|
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
name "gitlab"
|
||||||
|
maintainer "CHANGE ME"
|
||||||
|
homepage "CHANGEME.com"
|
||||||
|
|
||||||
|
replaces "gitlab"
|
||||||
|
install_path "/opt/gitlab"
|
||||||
|
build_version Omnibus::BuildVersion.new.semver
|
||||||
|
build_iteration 1
|
||||||
|
|
||||||
|
# creates required build directories
|
||||||
|
dependency "preparation"
|
||||||
|
|
||||||
|
# gitlab dependencies/components
|
||||||
|
# dependency "somedep"
|
||||||
|
|
||||||
|
# version manifest file
|
||||||
|
dependency "version-manifest"
|
||||||
|
|
||||||
|
exclude "\.git*"
|
||||||
|
exclude "bundler\/git"
|
|
@ -0,0 +1,42 @@
|
||||||
|
# This is an example software definition for a C project.
|
||||||
|
#
|
||||||
|
# Lots of software definitions for popular open source software
|
||||||
|
# already exist in `opscode-omnibus`:
|
||||||
|
#
|
||||||
|
# https://github.com/opscode/omnibus-software/tree/master/config/software
|
||||||
|
#
|
||||||
|
name "c-example"
|
||||||
|
version "1.0.0"
|
||||||
|
|
||||||
|
dependency "zlib"
|
||||||
|
dependency "openssl"
|
||||||
|
|
||||||
|
source :url => "http://itchy.neckbeard.se/download/c-example-1.0.0.tar.gz",
|
||||||
|
:md5 => "8e23151f569fb54afef093ac0695077d"
|
||||||
|
|
||||||
|
relative_path 'c-example-1.0.0'
|
||||||
|
|
||||||
|
env = {
|
||||||
|
"LDFLAGS" => "-L#{install_dir}/embedded/lib -I#{install_dir}/embedded/include",
|
||||||
|
"CFLAGS" => "-L#{install_dir}/embedded/lib -I#{install_dir}/embedded/include",
|
||||||
|
"LD_RUN_PATH" => "#{install_dir}/embedded/lib"
|
||||||
|
}
|
||||||
|
|
||||||
|
build do
|
||||||
|
command ["./configure",
|
||||||
|
"--prefix=#{install_dir}/embedded",
|
||||||
|
"--disable-debug",
|
||||||
|
"--enable-optimize",
|
||||||
|
"--disable-ldap",
|
||||||
|
"--disable-ldaps",
|
||||||
|
"--disable-rtsp",
|
||||||
|
"--enable-proxy",
|
||||||
|
"--disable-dependency-tracking",
|
||||||
|
"--enable-ipv6",
|
||||||
|
"--without-libidn",
|
||||||
|
"--with-ssl=#{install_dir}/embedded",
|
||||||
|
"--with-zlib=#{install_dir}/embedded"].join(" "), :env => env
|
||||||
|
|
||||||
|
command "make -j #{max_build_jobs}", :env => env
|
||||||
|
command "make install"
|
||||||
|
end
|
|
@ -0,0 +1,38 @@
|
||||||
|
# This is an example software definition for an Erlang project.
|
||||||
|
#
|
||||||
|
# Lots of software definitions for popular open source software
|
||||||
|
# already exist in `opscode-omnibus`:
|
||||||
|
#
|
||||||
|
# https://github.com/opscode/omnibus-software/tree/master/config/software
|
||||||
|
#
|
||||||
|
name "erlang-example"
|
||||||
|
version "1.0.0"
|
||||||
|
|
||||||
|
dependency "erlang"
|
||||||
|
dependency "rebar"
|
||||||
|
dependency "rsync"
|
||||||
|
|
||||||
|
source :git => "git://github.com/example/erlang.git"
|
||||||
|
|
||||||
|
relative_path "erlang-example"
|
||||||
|
|
||||||
|
env = {
|
||||||
|
"PATH" => "#{install_dir}/embedded/bin:#{ENV["PATH"]}",
|
||||||
|
"LDFLAGS" => "-L#{install_dir}/embedded/lib -I#{install_dir}/embedded/include",
|
||||||
|
"CFLAGS" => "-L#{install_dir}/embedded/lib -I#{install_dir}/embedded/include",
|
||||||
|
"LD_RUN_PATH" => "#{install_dir}/embedded/lib"
|
||||||
|
}
|
||||||
|
|
||||||
|
build do
|
||||||
|
command "make distclean", :env => env
|
||||||
|
command "make rel", :env => env
|
||||||
|
command "mkdir -p #{install_dir}/embedded/service/example-erlang"
|
||||||
|
command ["#{install_dir}/embedded/bin/rsync",
|
||||||
|
"-a",
|
||||||
|
"--delete",
|
||||||
|
"--exclude=.git/***",
|
||||||
|
"--exclude=.gitignore",
|
||||||
|
"./rel/erlang-example/",
|
||||||
|
"#{install_dir}/embedded/service/erlang-example/"].join(" ")
|
||||||
|
command "rm -rf #{install_dir}/embedded/service/erlang-example/log"
|
||||||
|
end
|
|
@ -0,0 +1,24 @@
|
||||||
|
# This is an example software definition for a Ruby project.
|
||||||
|
#
|
||||||
|
# Lots of software definitions for popular open source software
|
||||||
|
# already exist in `opscode-omnibus`:
|
||||||
|
#
|
||||||
|
# https://github.com/opscode/omnibus-software/tree/master/config/software
|
||||||
|
#
|
||||||
|
name "ruby-example"
|
||||||
|
version "1.0.0"
|
||||||
|
|
||||||
|
dependency "ruby"
|
||||||
|
dependency "rubygems"
|
||||||
|
dependency "bundler"
|
||||||
|
dependency "rsync"
|
||||||
|
|
||||||
|
source :git => "git://github.com/example/ruby.git"
|
||||||
|
|
||||||
|
relative_path "ruby-example"
|
||||||
|
|
||||||
|
build do
|
||||||
|
bundle "install --path=#{install_dir}/embedded/service/gem"
|
||||||
|
command "mkdir -p #{install_dir}/embedded/service/ruby-example"
|
||||||
|
command "#{install_dir}/embedded/bin/rsync -a --delete --exclude=.git/*** --exclude=.gitignore ./ #{install_dir}/embedded/service/ruby-example/"
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
# s3_access_key "something"
|
||||||
|
# s3_secret_key "something"
|
||||||
|
# s3_bucket "some-bucket"
|
||||||
|
# use_s3_caching true
|
||||||
|
# solaris_compiler "gcc"
|
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Install a full gitlab
|
||||||
|
#
|
||||||
|
|
||||||
|
PROGNAME=`basename $0`
|
||||||
|
INSTALLER_DIR=`dirname $0`
|
||||||
|
DEST_DIR=/opt/gitlab
|
||||||
|
CONFIG_DIR=/etc/gitlab
|
||||||
|
USAGE="usage: $0"
|
||||||
|
|
||||||
|
error_exit()
|
||||||
|
{
|
||||||
|
echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# move the actual files into place
|
||||||
|
rm -rf $DEST_DIR/* || error_exit "Cannot remove contents of $DEST_DIR"
|
||||||
|
mkdir -p $DEST_DIR || error_exit "Cannot create $DEST_DIR"
|
||||||
|
cp -R $INSTALLER_DIR $DEST_DIR || error_exit "Cannot install to $DEST_DIR"
|
||||||
|
rm -f $DEST_DIR/$PROGNAME
|
||||||
|
|
||||||
|
# You may want to symlink your packages bin files into /usr/bin
|
||||||
|
# ln -sf $DEST_DIR/bin/gitlab /usr/bin || error_exit "Cannot link gitlab to /usr/bin"
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Perform necessary gitlab setup steps
|
||||||
|
# after package is installed.
|
||||||
|
#
|
||||||
|
|
||||||
|
PROGNAME=$(basename $0)
|
||||||
|
|
||||||
|
function error_exit
|
||||||
|
{
|
||||||
|
echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Thank you for installing gitlab!"
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Perform necessary gitlab removal steps
|
||||||
|
# after package is uninstalled.
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "gitlab has been uninstalled!"
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Reference in New Issue