felipecrs / dev-ubuntu

A Vagrant box with desktop, tools, and adjustments for developers
MIT License
11 stars 6 forks source link
box ubuntu vagrant virtualbox

Deprecation notice

I have not been using this box anymore because I prefer to use WSL2 on Windows rather than VirtualBox, so it does not make sense to me to keep maintaining it.

Furthermore, I have putted much more effort on my dotfiles, which contains the latest and greatest enhancements, and then I use it to bootstrap any VM with a single command. That means that for me, my dotfiles project is replacing dev-ubuntu.

If this project worked well for you and you would like to keep using it (instead of moving to some dotfiles-like approach), I would suggest you to fork this repository and setup your own.

Ephemeral development environments such as Gitpod and GitHub Codespaces has never been so popular, and that is another reason why not to use a heavy VM.

The latest version of this box will still be available in Vagrant Cloud to download, but no more versions will be published, including the periodic builds. Older versions were deleted to due to space saving.

Dev Ubuntu

A Vagrant box with desktop, tools, and adjustments for developers

Gitpod Ready-to-Code Build Status Conventional Commits Commitizen friendly semantic-release Vagrant box size

This box is based on peru/ubuntu-20.04-desktop-amd64, which is a vagrant box for Ubuntu 20.04 Desktop.

What this box have

Get started

Requisites

For running this box, you need to have the following tools:

💡 Pro tip

On Windows, you can install both at once with Chocolatey with

choco install virtualbox vagrant

Creating a VM from this box

This box is available on Vagrant Cloud. For using it:

  1. Create a new folder on your computer, like:

    mkdir ~/my-dev-ubuntu
  2. Open a new terminal there and run:

    vagrant init felipecrs/dev-ubuntu
  3. Notice that a new file called Vagrantfile was created. In this file, you can set your personal options for your VM. For a good example, check my own Vagrantfile at my-dev-ubuntu. There you can find snippets for changing the keyboard layout, timezone and more.

  4. Run the VM and be happy!

    vagrant up

Updating to a newer version

This box is often updated. If you already a VM created from an older version, to update it you have to perform the following steps:

  1. Delete the VM, and this will wipe its data, so be sure you didn't left anything important there.

    vagrant destroy
  2. Download the new box with:

    vagrant box update

Technical details

The rest of this documentation covers technical details about how this project works.

Automated Build

This box is automatically built by Travis. Every new commit triggers a new build. We use semantic-release to determine whether we need to release a new version or not. The loop also tests the new deployed box before releasing it by running vagrant up on that version. If it fails, it doesn't release the version and deletes it. For more details check the .travis.yml and also the ci/deploy.sh.

The whole process is:

  1. Checkout the repository
  2. Install the dependencies (VirtualBox and Vagrant)
  3. vagrant up
  4. vagrant package
  5. Run semantic-release to determine whether the build should be released or not and generate the release notes
  6. Create a new version and upload the box to the Vagrant Cloud
  7. Test the deployed box by trying to run a vagrant up of it
  8. If the last step succeeds, release the version on Vagrant Cloud, commit the CHANGELOG and create a GitHub Release.

Build from source

You can also build the box from source with the following steps:

  1. Clone the repository, start a new terminal there, and run:

    vagrant up
  2. After the provision is done, you can turn the VM into a box with:

    vagrant package --vagrantfile src/Vagrantfile
  3. Then, you can add this generated box to your local boxes catalog with:

    vagrant box add package.box dev-ubuntu
  4. And then you can perform the steps from Creating a VM from this box as usual, such as:

    mkdir ~/my-dev-ubuntu
    cd ~/my-dev-ubuntu
    vagrant init dev-ubuntu
    vagrant up

💡 Pro tip

You can also use the test_local.sh script which performs all these previous steps automatically.