|
|
@@ -5,15 +5,20 @@ |
|
|
|
# ================== |
|
|
|
# Bubble Vagrantfile |
|
|
|
# ================== |
|
|
|
# Running `vagrant up` will create a full Bubble development environment, and |
|
|
|
# optionally start a local launcher. |
|
|
|
# Running `vagrant up` will create a full Bubble development environment including all |
|
|
|
# dependencies, and build all the code and website. You'll be ready to run a local |
|
|
|
# launcher or do dev work on the Bubble codebase. |
|
|
|
# |
|
|
|
# There are a few environment variables that determine how the box is initialized, |
|
|
|
# described below. |
|
|
|
# |
|
|
|
# ## Environment Variables |
|
|
|
# |
|
|
|
# ### LETSENCRYPT_EMAIL |
|
|
|
# If you specify the LETSENCRYPT_EMAIL environment variable, then `vagrant up` will also |
|
|
|
# start a Local Launcher (see docs/local-launcher.md) which is your starting point for |
|
|
|
# launching new Bubbles. |
|
|
|
# launching new Bubbles. You can always change this later by editing the `~/.bubble.env` |
|
|
|
# file after the Vagrant box is setup. |
|
|
|
# |
|
|
|
# ### BUBBLE_PORT |
|
|
|
# By default, Bubble will listen on port 8090. |
|
|
@@ -21,38 +26,38 @@ |
|
|
|
# Set the `BUBBLE_PORT` environment variable to another port, and Bubble will listen on |
|
|
|
# that port instead. |
|
|
|
# |
|
|
|
# ### BUBBLE_TAG |
|
|
|
# By default, the Vagrant box will run the bleeding edge (`master` branch) of Bubble. |
|
|
|
# Set the `BUBBLE_TAG` environment variable to the name of a git branch or tag to check |
|
|
|
# out instead. |
|
|
|
# |
|
|
|
# ### BUBBLE_PUBLIC_PORT |
|
|
|
# By default, Vagrant will only expose the Bubble API port (8090 or whatever BUBBLE_PORT |
|
|
|
# is set to) as listening on 127.0.0.1 |
|
|
|
# If you want the Bubble API port to be listening on all addresses (bind to 0.0.0.0) |
|
|
|
# then set the BUBBLE_PUBLIC_PORT environment variable to any value except 'false' |
|
|
|
# |
|
|
|
Vagrant.configure("2") do |config| |
|
|
|
config.vm.box = "ubuntu/focal64" |
|
|
|
|
|
|
|
# You can access the launcher on port 8090 (or BUBBLE_PORT) but only on 127.0.0.1 |
|
|
|
# If you want to allow outside access to port 8090 (listen on 0.0.0.0), use the version below |
|
|
|
config.vm.network "forwarded_port", guest: 8090, host: ENV['BUBBLE_PORT'] || 8090, host_ip: "127.0.0.1" |
|
|
|
|
|
|
|
# Anyone who can reach port 8090 on this system will be able to access the launcher |
|
|
|
# config.vm.network "forwarded_port", guest: 8090, host: ENV['BUBBLE_PORT'] || 8090 |
|
|
|
if not ENV.include? 'BUBBLE_PUBLIC_PORT' or ENV['BUBBLE_PUBLIC_PORT'] == 'false' do |
|
|
|
config.vm.network "forwarded_port", guest: 8090, host: ENV['BUBBLE_PORT'] || 8090, host_ip: "127.0.0.1" |
|
|
|
else |
|
|
|
# Anyone who can reach port 8090 on this system will be able to access the launcher |
|
|
|
config.vm.network "forwarded_port", guest: 8090, host: ENV['BUBBLE_PORT'] || 8090 |
|
|
|
end |
|
|
|
|
|
|
|
# Update system |
|
|
|
config.vm.provision :shell do |s| |
|
|
|
s.inline = <<-SHELL |
|
|
|
apt-get update -y |
|
|
|
apt-get upgrade -y |
|
|
|
SHELL |
|
|
|
end |
|
|
|
|
|
|
|
# Get dependencies and build everything |
|
|
|
config.vm.provision :shell do |s| |
|
|
|
s.env = { |
|
|
|
LETSENCRYPT_EMAIL: ENV['LETSENCRYPT_EMAIL'], |
|
|
|
BUBBLE_TAG: ENV['BUBBLE_TAG'] || 'master' |
|
|
|
} |
|
|
|
s.env = { LETSENCRYPT_EMAIL: ENV['LETSENCRYPT_EMAIL'] } |
|
|
|
s.privileged = false |
|
|
|
s.inline = <<-SHELL |
|
|
|
# Get the code |
|
|
|
git clone https://git.bubblev.org/bubblev/bubble.git |
|
|
|
cd bubble && git fetch && git pull origin ${BUBBLE_TAG} |
|
|
|
cd /vagrant |
|
|
|
|
|
|
|
# Initialize the system |
|
|
|
./bin/first_time_ubuntu.sh |
|
|
@@ -61,14 +66,24 @@ Vagrant.configure("2") do |config| |
|
|
|
SKIP_BUBBLE_BUILD=1 ./bin/first_time_setup.sh |
|
|
|
|
|
|
|
# Build the bubble jar |
|
|
|
MVN_QUIET="" |
|
|
|
BUBBLE_PRODUCTION=1 mvn ${MVN_QUIET} -Pproduction clean package |
|
|
|
BUBBLE_PRODUCTION=1 mvn -DskipTests=true -Dcheckstyle.skip=true -Pproduction clean package |
|
|
|
|
|
|
|
# Start the Local Launcher if LETSENCRYPT_EMAIL is defined |
|
|
|
# Write bubble API port |
|
|
|
echo \"export BUBBLE_SERVER_PORT=${BUBBLE_PORT}\" > ~/.bubble.env |
|
|
|
|
|
|
|
# Allow website to be loaded from disk |
|
|
|
echo \"export BUBBLE_ASSETS_DIR=$(pwd)/bubble-web/dist\" >> ~/.bubble.env |
|
|
|
|
|
|
|
# Add bubble bin to PATH |
|
|
|
echo \"export PATH=\${PATH}:${HOME}/bubble/bin\" >> ~/.bashrc |
|
|
|
|
|
|
|
# Set LETSENCRYPT_EMAIL is defined |
|
|
|
if [[ -n \"${LETSENCRYPT_EMAIL}\" ]] ; then |
|
|
|
echo \"export LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}\" > bubble.env |
|
|
|
# ./bin/run.sh bubble.env |
|
|
|
echo \"export LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}\" >> ~/.bubble.env |
|
|
|
fi |
|
|
|
|
|
|
|
# Create env file symlink for running tests |
|
|
|
cd ~ && ln -s .bubble.env .bubble-test.env |
|
|
|
SHELL |
|
|
|
end |
|
|
|
end |