Updating VoxelGlobe - ngageoint/voxel-globe GitHub Wiki

The latest version of VoxelGlobe is represented by the Docker images at https://hub.docker.com/r/vsiri/voxel_globe/ this means that only the latest version of master will be conveniently hosted for you. This will represent the latest version with all the bug fixes and features.

TL;DR

  1. git pull origin master
  2. git submodule update
  3. ./just sync start

Updating VoxelGlobe

You must first checkout the latest version of the VoxelGlobe:

git checkout {remote_name} {branch_name}

Then in a separate command, you need to update the submodules. Assuming you are not a submodule developer, you can simply

git submodule update

or else you will have to merge them yourself (Advanced developers only).

At this point, the repo is checked out and should match the latest images on docker hub. Only one set of images are currently hosted on docker hub, and in this case they represent the latest master branch. See below for how to use any arbitrary version.

Now that you have updates your code the the latest VoxelGlobe, there are many moving pieces that need to be updated. There is a single just command to do all of this for you,

./just sync

just sync runs some database migration steps, and several other things, last of which is incrementally building vxl. Building VXL can take the longest amount of time (sometimes less than a minute or up to an hour). All services are stopped during just sync to prevent any caching problems that may occur.

Once just sync is done, you are ready to run ./just start and resume using VoxelGlobe

Checking out a custom version of VoxelGlobe

(Advanced users only)

If you absolutely need a version of VoxelGlobe other than the latest version, you can build the images yourself. This can take up to an hour or two the first time, but will be much quicker due to Docker's cache. To checkout a custom version, run

git checkout {remote} {version}
git submodule update
./just build sync

It is important to run just build sync as one command in that order, as it sets up a special flag in sync to not pull the latest images, thus overwriting the images you just built.

This is necessary because a lot of configuration goes into each service, and has to match the server code running in order for everything to run smoothly.

When switching back and forth between versions of VoxelGlobe, there is a very small chance the database will not migrate well. Django does a very good job as migrating to newer versions, and I am not sure how well it migrates to older versions. For this reason, in the case of database corruption ./just initialize-database should be run to wipe and delete your currently database. This is not a recoverable process and will delete everything in your database, and should only be done as a last resort.