Skip to content
Hiroshi Miura edited this page Mar 29, 2014 · 10 revisions

Development Environment

There are several reference environment for development base.

  1. Ubuntu Precise(12.04) 64bit + vagrant ppa

  2. Ubuntu Trusty 64bit

  3. Fedora 19

  4. Fedora 20

We provides Vagrant boxes for development and test You can use it through Vagrantfile provided in spec directory.

You are recommended to use these Vagrantfile to make development environment.

requirements for development

  • libvirt
  • git
  • nfs-utils
  • bsdtar
  • redir
  • gcc
  • make
  • rubygem-rake
  • ruby-devel
  • ruby 2.0
  • libxml2-devel
  • libxslt-devel
  • ruby-libvirt ruby gems

Tests

We use Rspec and Travis-CI for continous integration and unit test.

Tests are located in spec directory. Every PR should be tested and passes Travis-CI test before merging.

Milestones and versions

Milestones

We set milestones for future releases. Vagrant-KVM is under active development and still in development status. The next several milestones are targeted to implement new features such as support of new vagrant versions, multi-vm support, virtfs support, and so on.

Versions

We use (major).(minor).(patchlevel) versioning. In development status, major version is 0. When Implementing major features, we increment minor version such as 0.2.0.

When it reaches beta status, it may be 0.9.x.

When it reaches production status, it become 1.0.0.

Before 0.9.x, APIs, configuration parameters and other behaviors will be changed without caution or migration pass.

Branches

We basically use master branch for development in 0.x series. It is an exception when we need to release interim release to previous version that includes only single or some fixes. When necessary we make -maint branch such as v0.1.5-maint. It becomes next release and planed version is incremented.

Here is an example.

We have released v0.1.5 in March, 2014. We started development for v0.1.6 to add more feature and merged several changes just after releasing v0.1.5. We found v0.1.5 is not working with Vagrant 1.5 that is released in March, 2014. Because it is not welcome to wait to a normal v0.1.6 release for Vagrant 1.5 support, we decided to release interim fix release as v0.1.6. We start release branch 'v0.1.5-maint' for v0.1.6 release. The release number of new features on master is changed to v0.1.7 not v0.1.6.

Related projects

Vagrant-KVM is a provider for KVM on Linux platform. There are a similar project and related projects with vagrant-kvm.

  1. vagrant-libvirt: vagrant-libvirt is a provider for libvirt and kvm, xen and other visualization platforms. some developers are contributed to both project and exchange ideas and codes each other.

  2. vagrant-mutate: Vagrant-mutate is a command plugin to convert box images for another provider. Vagrant-kvm has a feature to convert in 0.1.4 and before, but now, 0.1.5 and after, deprecated and users are recommended to use vagrant-mutate.

  3. sahara: Sahara is a command plugin to make snapshot. It was proposed to support vagrant-kvm with sahara, and waiting confirmation of other developers, you.

  4. libvirt: libvirt, ruby-libvrt are library depend on.

Contribution Guidelines

How To Contribute

  • Clone: git clone git://github.com/adrahon/vagrant-kvm.git

  • Get Setup

  • Create a topic branch: git checkout -b awesome_feature

  • Hack and Commit away.

  • Keep up to date: git fetch && git rebase origin/master

  • Test with Rspec

Once you’re ready:

  • Fork the project on GitHub

  • Add your repository as a remote: git remote add your_remote your_repo

  • (Optional) setup Travis-CI for your repository

  • Push up your branch: git push your_remote awesome_feature

  • (Optional) check your Travis score whether passed

  • Create a Pull Request for the topic branch, asking for review.

  • Check your PR is passed on Travis

  • If not, fix your commit and push to your repository: git push your_remote awesome_feature