mirror of
https://github.com/dokku/dokku.git
synced 2025-12-16 03:57:43 +01:00
While we will still build for 18.04, we will now stop testing against it. Instead, we will test against 20.04, the next EOL release after 18.04. Once Ubuntu 18.04 is EOL, any references to it will also be removed. Note that 18.04 support was already deprecated in Dokku 0.28.0, so this change is just acknowledging that deprecation.
110 lines
5.1 KiB
Ruby
110 lines
5.1 KiB
Ruby
# -*- mode: ruby -*-
|
|
# vi: set ft=ruby :
|
|
|
|
BOX_NAME = ENV["BOX_NAME"] || "bento/ubuntu-20.04"
|
|
BOX_CPUS = ENV["BOX_CPUS"] || "1"
|
|
BOX_MEMORY = ENV["BOX_MEMORY"] || "1024"
|
|
DOKKU_DOMAIN = ENV["DOKKU_DOMAIN"] || "dokku.me"
|
|
DOKKU_IP = ENV["DOKKU_IP"] || "10.0.0.2"
|
|
PREBUILT_STACK_URL = File.exist?("#{File.dirname(__FILE__)}/stack.tgz") ? 'file:///root/dokku/stack.tgz' : nil
|
|
PUBLIC_KEY_PATH = "#{Dir.home}/.ssh/id_rsa.pub"
|
|
|
|
make_cmd = "DEBIAN_FRONTEND=noninteractive make -e install"
|
|
if PREBUILT_STACK_URL
|
|
make_cmd = "PREBUILT_STACK_URL='#{PREBUILT_STACK_URL}' #{make_cmd}"
|
|
end
|
|
|
|
Vagrant::configure("2") do |config|
|
|
config.ssh.forward_agent = true
|
|
|
|
config.vm.box = BOX_NAME
|
|
|
|
config.vm.provider :virtualbox do |vb|
|
|
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
|
|
# Ubuntu's Raring 64-bit cloud image is set to a 32-bit Ubuntu OS type by
|
|
# default in Virtualbox and thus will not boot. Manually override that.
|
|
vb.customize ["modifyvm", :id, "--ostype", "Ubuntu_64"]
|
|
vb.customize ["modifyvm", :id, "--cpus", BOX_CPUS]
|
|
vb.customize ["modifyvm", :id, "--memory", BOX_MEMORY]
|
|
end
|
|
|
|
config.vm.provider :vmware_fusion do |v, override|
|
|
v.vmx["memsize"] = BOX_MEMORY
|
|
v.ssh_info_public = true
|
|
end
|
|
|
|
config.vm.provider :vmware_desktop do |v, override|
|
|
v.vmx["memsize"] = BOX_MEMORY
|
|
v.ssh_info_public = true
|
|
end
|
|
|
|
config.vm.define "empty", autostart: false
|
|
|
|
config.vm.define "dokku", primary: true do |vm|
|
|
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
|
|
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
|
vm.vm.network :private_network, ip: DOKKU_IP
|
|
|
|
# Use the same nameserver as the host machine in order to avoid the "too many redirects" problem.
|
|
vm.vm.provider :virtualbox do |vb|
|
|
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off"]
|
|
vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"]
|
|
# enable NAT adapter cable https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=838999
|
|
vb.customize ["modifyvm", :id, "--cableconnected1", "on"]
|
|
end
|
|
|
|
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git build-essential >/dev/null && cd /root/dokku && #{make_cmd}"
|
|
vm.vm.provision :shell do |s|
|
|
s.inline = <<-EOT
|
|
echo '"\e[5~": history-search-backward' > /root/.inputrc
|
|
echo '"\e[6~": history-search-forward' >> /root/.inputrc
|
|
echo 'set show-all-if-ambiguous on' >> /root/.inputrc
|
|
echo 'set completion-ignore-case on' >> /root/.inputrc
|
|
EOT
|
|
end
|
|
|
|
if Pathname.new(PUBLIC_KEY_PATH).exist?
|
|
vm.vm.provision :shell, :inline => "echo 'Importing ssh key into dokku' && cat /root/.ssh/authorized_keys | dokku ssh-keys:add admin"
|
|
end
|
|
end
|
|
|
|
# For windows users. Sharing folder from windows creates problem with sym links and so, sync the repo instead from GOS.
|
|
config.vm.define "dokku-windows", autostart: false do |vm|
|
|
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
|
vm.vm.network :private_network, ip: DOKKU_IP
|
|
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git dos2unix >/dev/null"
|
|
vm.vm.provision :shell, :inline => "cd /vagrant/ && export DOKKU_BRANCH=`git symbolic-ref -q --short HEAD 2>/dev/null` && export DOKKU_TAG=`git describe --tags --exact-match 2>/dev/null` && cd /root/ && cp /vagrant/bootstrap.sh ./ && dos2unix bootstrap.sh && bash bootstrap.sh"
|
|
end
|
|
|
|
config.vm.define "dokku-deb", autostart: false do |vm|
|
|
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
|
|
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
|
vm.vm.network :private_network, ip: DOKKU_IP
|
|
vm.vm.provision :shell, :inline => "cd /root/dokku && make install-from-deb"
|
|
end
|
|
|
|
config.vm.define "build", autostart: false do |vm|
|
|
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
|
|
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
|
vm.vm.network :private_network, ip: DOKKU_IP
|
|
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git >/dev/null && cd /root/dokku && #{make_cmd}"
|
|
vm.vm.provision :shell, :inline => "export IS_RELEASE=true && cd /root/dokku && make deb-all"
|
|
end
|
|
|
|
config.vm.define "build-arch", autostart: false do |vm|
|
|
vm.vm.box = "bugyt/archlinux"
|
|
vm.vm.synced_folder File.dirname(__FILE__), "/dokku"
|
|
if Pathname.new("#{File.dirname(__FILE__)}/../dokku-arch").exist?
|
|
vm.vm.synced_folder "#{File.dirname(__FILE__)}/../dokku-arch", "/dokku-arch"
|
|
end
|
|
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
|
vm.vm.network :private_network, ip: DOKKU_IP
|
|
vm.vm.provision :shell, :inline => "cd /dokku && make arch-all", privileged: false
|
|
end
|
|
|
|
if Pathname.new(PUBLIC_KEY_PATH).exist?
|
|
config.vm.provision :file, source: PUBLIC_KEY_PATH, destination: '/tmp/id_rsa.pub'
|
|
config.vm.provision :shell, :inline => "echo 'Copying ssh key into vm' && rm -f /root/.ssh/authorized_keys && mkdir -p /root/.ssh && sudo cp /tmp/id_rsa.pub /root/.ssh/authorized_keys"
|
|
end
|
|
end
|