Version 2.0.0 released
Release highlights
Upgraded to Ubuntu Bionic Beaver
Ubuntu Bionic Beaver is the latest LTS release of Ubuntu.
The first thing you’ll likely notice is the Gnome desktop has replaced Unity as the standard Ubuntu desktop. We’ve also dropped the option of using the Xfce desktop for your development environment. While you no longer have a choice of desktops you can now configure the placement of the dock.
Apart from that you’ll notice newer versions of popular packages, see the Ubuntu Bionic Beaver release notes for details.
Improved Java support
- Added SDKMAN! Software Development Kit Manager
- Java 11 is now the default JDK (Java 8 is still available)
- Use SDKMAN! to switch Java versions e.g.
sdk use java 8
sdk use java 11
- Use SDKMAN! to switch Java versions e.g.
-
Added new GantSign code style for IntelliJ IDE
Note: while the new GantSign code style is the default, we recommend you add the code style configuration
.idea/codeStyles/*
to version control for each of your projects. It’s wise to copy the code style from the IDE to the project so it doesn’t change unintentionally and all developers have the same configuration. -
Added GantSign inspection profile for IntelliJ IDEA
Note: while the new GantSign inspection profile is the default, we recommend you add the inspection profile configuration
.idea/inspectionProfiles/*
to version control for each of your projects. It’s wise to copy the inspection profile from the IDE to the project so it doesn’t change unintentionally and all developers have the same configuration. The GantSign inspection profile is optimized for greenfield projects, for existing projects you may want to use the default IntelliJ inspection profile instead. - Added LogSupport2 plugin for IntelliJ IDEA
Improved Python support
- Added Pyenv Python version manager
- Added Pipenv Python package manager with Virtualenv support
- Added Python plugin for IntelliJ IDEA
Improved Kubernetes support
- Added Minikube for creating a local Kubernetes cluster
- Added Kops for creating production grade Kubernates clusters
- Added Helm the Kubernetes package manager
- Added Kompose for using Docker Compose files with Kubernetes
Improved Zsh support
- Added zsh-autosuggestions makes suggestions based on previously executed commands
- Added syntax-highlighting syntax highlighting for shell commands
- Added Antigen package manager for Zsh
Improved tab-completion support
- Ubuntu Bionic Beaver comes with newer package versions, some with improved Zsh support
- Added tab-completion for more commands
- bat
- ctop
- fd
- gradle
- helm
- httpie
- hub
- kompose
- kops
- kubeadm
- kubectl
- moleculew
- npm
- pip
- pipenv
- pyenv
- sdkman
- yarn
Improved Git support
- Added hub wrapper for Git with additional features for GitHub
- Added Git Credential Manager for Mac and Linux
-
Added new Git aliases
-
Checkout an existing branch
git co
≡git checkout
-
Create a new branch
git cb
≡git checkout -b
-
Amend the last commit and change the commit message
git ca
≡git commit --amend
-
Amend the last commit without changing the commit message
git cane
≡git commit --amend --no-edit
-
Rebase the current branch onto
origin/develop
git rod
≡git rebase origin/develop
-
Push the current branch to
origin HEAD
git po
≡git push origin HEAD
-
Force push the current branch to
origin HEAD
git pof
≡git push origin HEAD --force
-
Switch to the
master
branch pull changes and prune remote branchesgit cmp
≡git checkout master && git pull -p
-
Switch to the
develop
branch pull changes and prune remote branchesgit cdp
≡git checkout develop && git pull -p
-
Pop the most recent stash
git pop
≡git stash pop
-
Reformat the recent changes as Markdown release notes
git release-notes
≡git log --color --pretty=format:'%s%Cred%d%Creset' --decorate | sed -E 's/(.*) \\((\\#[0-9]+)\\)/* \\2: \\1/' | tac -
-
- Added configuration for setting the Git user name and email address during provisioning
More command line tools
- bat more advanced alternative to
cat
- ctop
top
like tool for Docker containers - fd intuitive alternative to
find
Improved credential handling
Version 1 of this development environment was configured to auto-login. The problem with this approach was it prevented the Gnome Keyring from persisting credentials. This meant you had to put in you Git credentials every time you reloaded the VM. It also causes problems for apps such as Google Chrome that expect to be able to store credentials.
Version 2 of this development environment removes the auto-login feature. You now have to enter a password to login the development environment, but most other credentials can be persisted between sessions. For security, you’re forced to change the password on first use.
Improved backup & restore
The original backup mechanism (using Unison file synchronization) was prone to failure. For version 2 we’re using a new backup mechanism using rsync.
Removed software
-
These days Visual Studio Code is as good or better for practically everything.
-
We recommend using Molecule Wrapper instead of installing Molecule as a system package.
Changed minimum requirements
You need to upgrade to at least Vagrant 2.1.0
before you can provision a development-environment (follow the upgrade procedure
below).
Upgrade procedure
Preparing your existing VM for upgrade
Purge the download cache
While not strictly required, it’s best to clean out all the old Ubuntu Xenial packages before upgrading to free up disk space.
Bring up the development environment by running the following on the host:
vagrant up
From the development environment terminal run:
sudo rm -rf /var/persistent/usr/local/src/ansible/data/*
# Workaround for /bin/rm: cannot execute [Argument list too long]
for f in /var/persistent/var/cache/apt/archives/*.deb; do sudo rm -f "$f"; done
Upgrade to the latest version of Vagrant
Download the latest version of Vagrant from
https://www.vagrantup.com. Uninstall your current
version of Vagrant then install then reboot. Remove any lingering parts of the
old installation under C:\Program Files\HashiCorp\Vagrant
. Then
reinstall Vagrant. While it should be possible to upgrade Vagrant without
uninstalling, it fails when you have the Vagrant Triggers plugin installed (it
conflicts with the native triggers feature in recent versions of Vagrant).
Update the provisioning scripts
From the host run:
git fetch && git rebase origin/2.0.0
Re-provision the development environment
From the host run:
vagrant destroy && vagrant up
If there are any problems follow the troubleshooting advice.
Change your password
Once provisioning is complete you need to change your password. Login using the
username vagrant
and password vagrant
. You’ll then be prompted to change
your password.
Pick a strong password and don’t reuse another password (e.g. don’t use your Windows password). This password will be used to secure access to saved passwords in your browser, SSH key passwords and Git credentials etc.
The password needs to be at least 16 characters long and you cannot repeat the same character more than 3 times in a row. Prefer long easy to remember phrases over difficult to remember random passwords.
Important: you need to complete this procedure before you stop/reload the VM.
Fix SSH key permissions
The version of SSH that comes with Ubuntu Bionic will not load an SSH key if it’s readable by other users. Run the following command from the terminal in the client VM to fix the file permissions:
chmod 'go-rwx' ~/.ssh/*
After this is complete logout and log back in so your key is loaded.
Full change list
For a full list of changes view the release notes.