15

是否有任何云 CI 服务允许 Vagrant VM 使用 VirtualBox 作为提供程序运行?

早期的调查表明,这似乎无法通过 Travis CI 或 Circle CI 实现,尽管 vagrant-aws 插件允许将 AWS 服务器用作 Vagrant 提供程序。这个对吗?

4

3 回答 3

5

2021 年 1 月更新GitHub Actions还支持 Vagrant - 并且Vagrant/VirtualBox 都在 MacOS 环境中开箱即用安装(目前不在 Linux或 Windows 上!)。在此处查看可能的环境。因此,我在以下位置创建了一个完全可理解的示例项目:https ://github.com/jonashackt/vagrant-github-actions

1.:创建一个Vagrantfile(你不限于使用 Travis 的 libvirt,你有一个完整的 VirtualBox 环境,在 GitHub Actions 上运行嵌套虚拟化!),如下所示:

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.:在存储库的目录中创建一个类似vagrant-up.yml的 GitHub Actions 工作流:.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!'"

你甚至可以为 Vagran 盒子添加缓存,这会保护你几秒钟 :)


2020 年初:

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

一个 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!'"

借助generic来自 Vagrant Cloud 的 Vagrant Box 图像,您还可以建立在 Travis 上使用 Vagrant + libvirt + KVM 和在本地计算机上使用 Vagrant + VirtualBox 的工作流程,如果您愿意:

在此处输入图像描述

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

于 2020-02-24T16:50:40.240 回答
4

许多 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 发行版的集成测试。

于 2015-08-24T21:23:46.010 回答
0

AppVeyor使用 VirtualBox 作为提供者来运行 Vagrant。此外,您可以使用其他提供程序,例如 libvirt 或 Hyper-v。

更新: Github Actions是另一种选择。只有Mac OS 环境启用了嵌套虚拟化。一个例子是herehere

于 2020-09-01T18:01:50.550 回答