mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
87 lines
4 KiB
Ruby
87 lines
4 KiB
Ruby
# -*- mode: ruby -*-
|
|
# vi: set ft=ruby :
|
|
|
|
BOX_NAME = "docker-ci"
|
|
BOX_URI = "http://files.vagrantup.com/precise64.box"
|
|
AWS_AMI = "ami-d0f89fb9"
|
|
DOCKER_PATH = "/go/src/github.com/dotcloud/docker"
|
|
CFG_PATH = "#{DOCKER_PATH}/testing/buildbot"
|
|
on_vbox = File.file?("#{File.dirname(__FILE__)}/.vagrant/machines/default/virtualbox/id") | \
|
|
Dir.glob("#{File.dirname(__FILE__)}/.vagrant/machines/default/*/id").empty? & \
|
|
(on_vbox=true; ARGV.each do |arg| on_vbox &&= !arg.downcase.start_with?("--provider") end; on_vbox)
|
|
USER = on_vbox ? "vagrant": "ubuntu"
|
|
|
|
Vagrant::Config.run do |config|
|
|
# Setup virtual machine box. This VM configuration code is always executed.
|
|
config.vm.box = BOX_NAME
|
|
config.vm.box_url = BOX_URI
|
|
config.vm.forward_port 8010, 8010
|
|
config.vm.share_folder "v-data", DOCKER_PATH, "#{File.dirname(__FILE__)}/.."
|
|
|
|
# Deploy buildbot and its dependencies if it was not done
|
|
if Dir.glob("#{File.dirname(__FILE__)}/.vagrant/machines/default/*/id").empty?
|
|
|
|
# Add memory limitation capabilities
|
|
pkg_cmd = 'sed -Ei \'s/^(GRUB_CMDLINE_LINUX_DEFAULT)=.+/\\1="cgroup_enable=memory swapaccount=1 quiet"/\' /etc/default/grub; '
|
|
# Install new kernel
|
|
pkg_cmd << "apt-get update -qq; apt-get install -q -y linux-image-generic-lts-raring; "
|
|
|
|
# Deploy buildbot CI
|
|
pkg_cmd << "echo 'America/Los_Angeles' > /etc/timezone; " \
|
|
"dpkg-reconfigure --frontend noninteractive tzdata; " \
|
|
"apt-get install -q -y python-dev python-pip supervisor; " \
|
|
"pip install -r #{CFG_PATH}/requirements.txt; " \
|
|
"mkdir /data; chown #{USER}.#{USER} /data; cd /data; " \
|
|
"#{CFG_PATH}/setup.sh #{USER} #{CFG_PATH} #{ENV['BUILDBOT_PWD']} " \
|
|
"#{ENV['IRC_PWD']} #{ENV['IRC_CHANNEL']} #{ENV['SMTP_USER']} " \
|
|
"#{ENV['SMTP_PWD']} #{ENV['EMAIL_RCP']}; " \
|
|
"#{CFG_PATH}/setup_credentials.sh #{USER} " \
|
|
"#{ENV['REGISTRY_USER']} #{ENV['REGISTRY_PWD']}; "
|
|
|
|
# Install docker
|
|
pkg_cmd << "mkdir /mnt/docker; ln -s /mnt/docker /var/lib/docker; " \
|
|
"wget -q -O - https://get.docker.io/gpg | apt-key add -; " \
|
|
"echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list; " \
|
|
"apt-get update -qq; apt-get install -yq lxc-docker; "
|
|
|
|
#### FIXME. Temporarily install docker with proper apparmor handling
|
|
pkg_cmd << "stop docker; wget -q -O /usr/bin/docker http://test.docker.io/test/docker; start docker; " \
|
|
|
|
# Install testing dependencies
|
|
pkg_cmd << "wget -O go.tgz http://go.googlecode.com/files/go1.1.2.linux-amd64.tar.gz; " \
|
|
" tar -C /usr/local -vxzf go.tgz; ln -s /usr/local/go/bin/go /usr/bin/go; " \
|
|
"curl -s https://phantomjs.googlecode.com/files/phantomjs-1.9.1-linux-x86_64.tar.bz2 | " \
|
|
" tar jx -C /usr/bin --strip-components=2 phantomjs-1.9.1-linux-x86_64/bin/phantomjs; " \
|
|
"DEBIAN_FRONTEND=noninteractive apt-get install -qy lxc git mercurial aufs-tools " \
|
|
" make libfontconfig libevent-dev; " \
|
|
"export GOPATH=/data/docker-dependencies; go get -d github.com/dotcloud/docker; " \
|
|
"rm -rf ${GOPATH}/src/github.com/dotcloud/docker; "
|
|
|
|
# After reboot, build containers and prepare docker to run on dind
|
|
pkg_cmd << "cp #{DOCKER_PATH}/testing/buildbot/dockerci_local.sh /etc/rc.local; " \
|
|
|
|
# Activate new kernel
|
|
pkg_cmd << "shutdown -r +1; "
|
|
config.vm.provision :shell, :inline => pkg_cmd
|
|
end
|
|
end
|
|
|
|
# Providers were added on Vagrant >= 1.1.0
|
|
Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config|
|
|
config.vm.box = "dummy"
|
|
config.vm.provider :aws do |aws, override|
|
|
aws.tags = { 'Name' => 'docker-ci' }
|
|
aws.access_key_id = ENV["AWS_ACCESS_KEY_ID"]
|
|
aws.secret_access_key = ENV["AWS_SECRET_ACCESS_KEY"]
|
|
aws.keypair_name = ENV["AWS_KEYPAIR_NAME"]
|
|
override.ssh.private_key_path = ENV["AWS_SSH_PRIVKEY"]
|
|
override.ssh.username = USER
|
|
aws.ami = AWS_AMI
|
|
aws.region = "us-east-1"
|
|
aws.instance_type = "m1.small"
|
|
aws.security_groups = "gateway"
|
|
end
|
|
|
|
config.vm.provider :virtualbox do |vb|
|
|
end
|
|
end
|