在云CI服务上使用Vagrant

16

有没有任何云CI服务允许使用VirtualBox作为提供程序来运行Vagrant虚拟机?

初步调查显示,Travis CI或Circle CI似乎不支持此功能,尽管vagrant-aws插件允许使用AWS服务器作为Vagrant提供程序。这个说法正确吗?

3个回答

6
更新于2021年1月:GitHub Actions还支持Vagrant - 在MacOS环境中,Vagrant / VirtualBox都是开箱即用的目前不支持Linux或Windows!)。请参见此处可能的环境。因此,我创建了一个完全易懂的示例项目:https://github.com/jonashackt/vagrant-github-actions 1.:创建一个Vagrantfile(与Travis不同,您不仅限于libvirt,而且在GitHub Actions上拥有一个完整的VirtualBox环境,具有嵌套虚拟化功能!)如下所示:
Vagrant.configure("2") do |config|
    config.vm.box = "generic/ubuntu1804"

    config.vm.define 'ubuntu'

    # Prevent SharedFoldersEnableSymlinksCreate errors
    config.vm.synced_folder ".", "/vagrant", disabled: true
end

2.:创建一个 GitHub Actions 工作流程,像这个 vagrant-up.yml 一样,在您的存储库中的 .github/workflows 目录中:

name: vagrant-up

on: [push]

jobs:
  vagrant-up:
    runs-on: macos-10.15

    steps:
    - uses: actions/checkout@v2

    - name: Run vagrant up
      run: vagrant up

    - name: ssh into box after boot
      run: vagrant ssh -c "echo 'hello world!'"

您甚至可以为Vagrant boxes添加缓存, 这样可以节省一些时间 :)


2020年初:

TravisCI现在终于能够运行Vagrant了!感谢这个GitHub问题,我了解到libvirt和KVM可以与vagrant-libvirt插件一起使用,以在TravisCI上运行Vagrant boxes。

一个示例的TravisCI.travis.yml应该看起来像这样:

---
dist: bionic
language: python

install:
# Install libvrt & KVM
- sudo apt-get update && sudo apt-get install -y bridge-utils dnsmasq-base ebtables libvirt-bin libvirt-dev qemu-kvm qemu-utils ruby-dev

# Download Vagrant & Install Vagrant package
- sudo wget -nv https://releases.hashicorp.com/vagrant/2.2.7/vagrant_2.2.7_x86_64.deb
- sudo dpkg -i vagrant_2.2.7_x86_64.deb

# Vagrant correctly installed?
- vagrant --version

# Install vagrant-libvirt Vagrant plugin
- sudo vagrant plugin install vagrant-libvirt

script:
- sudo vagrant up --provider=libvirt
- sudo vagrant ssh -c "echo 'hello world!'"

通过从Vagrant Cloud获取通用Vagrant Box镜像的帮助,您还可以建立使用Travis上的Vagrant + libvirt + KVM和本地机器上的Vagrant + VirtualBox的工作流程,如果您喜欢:

enter image description here

我在这里创建了一个完全工作且100%可理解的示例项目:https://github.com/jonashackt/vagrant-travisci-libvrt

太棒了!非常感谢你分享这个消息。 - Eugen

5

许多CI服务不允许通过LXC或Virtualbox运行Vagrant,因为这将需要嵌套虚拟化(在VM中运行VM)或为您提供纯裸金属服务器。

2021年的现状(已更新):

  • Github Actions可以实现。
  • Travis能够通过一些解决方法来运行Vagrant。
  • AppVeyor允许运行VirtualBox(非免费计划)。
  • 您无法在CodeShip下运行。
  • 在CircleCI下也不能运行。
  • 不知道其他CI服务情况,将进一步调查。

我希望在未来我们能看到CI服务允许使用Virtualbox或LXC运行Vagrant,但目前Docker(带有其限制)是唯一的选择。


就我个人而言,我很乐意通过Test-Kitchen CI或类似工具将其用于针对不同平台/ Linux发行版的集成测试。


1
AppVeyor 允许运行 VirtualBox。 - Gill Bates
1
这个答案已经不正确了,因为从2020年初开始,Travis就能够运行Vagrant了,现在GitHub Actions也可以。AppVeyor在免费计划中不完全支持Vagrant,因为缺少嵌套虚拟化功能。 - jonashackt

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接