This project contains scripts to automate virtual machine management for building and testing Sonic Pi on Linux.
It assumes that the following commands all exist and your user has permission to run them:
- docker-compose
- erb
- python -m venv
- ruby
- virsh
- virt-install
- cloud-localds
On ubuntu, sudo apt install ruby libvirt-clients libvirt-daemon-system virtinst cloud-image-utils
Proceed with caution and low expectations.
Cloud images are disk images built to run on public and private cloud infrastructure like AWS, Azure, and OpenStack.
We use cloud images in our build farm where possible because they're small, and they are easy to configure on boot with cloud-init.
We can destroy the farm and rebuild from scratch in seconds without the hassle of installing from an ISO image or maintaining our own fleet of run ready images.
Run librarian.rb list
to see the images this project knows
about. Download one or more with librarian.rb download
.
Open cloud-init/userdata.txt.erb
and update the apt proxy
configuration to your local apt proxy (or delete that section all
together).
Run create-vms.sh
.
Run build-metadata-files.sh
Run configure-vms.sh
.
Open buildbot
(Work in Progress) Include metadata in the project to allow the farm to download images for itself. Let the user add or remove images from a list as they please, and let the project deal with downloads and updates.
Right now we're left with VMs that aren't doing any work. That's pretty underwhelming. Script the installation of build prerequisites and actually build Sonic Pi on all the farm members.
Once we're building from source, it won't be a stretch to create unofficial daily build packages.