是否有任何云 CI 服务允许 Vagrant VM 使用 VirtualBox 作为提供程序运行?
早期的调查表明,这似乎无法通过 Travis CI 或 Circle CI 实现,尽管 vagrant-aws 插件允许将 AWS 服务器用作 Vagrant 提供程序。这个对吗?
是否有任何云 CI 服务允许 Vagrant VM 使用 VirtualBox 作为提供程序运行?
早期的调查表明,这似乎无法通过 Travis CI 或 Circle CI 实现,尽管 vagrant-aws 插件允许将 AWS 服务器用作 Vagrant 提供程序。这个对吗?
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
许多 CI 服务不允许通过 LXC 或 Virtualbox 运行 Vagrant,因为它需要嵌套虚拟化(在 VM 中运行 VM)或为您配置的纯裸机服务器。
当前 2021 年(更新)情况:
我希望在此期间我们会看到 CI 服务允许使用 Virtualbox 或 LXC 运行 Vagrant,但目前 Docker(有其局限性)是唯一的选择。
就个人而言,我很乐意通过Test-Kitchen CI或类似工具将它用于针对不同平台/linux 发行版的集成测试。
AppVeyor使用 VirtualBox 作为提供者来运行 Vagrant。此外,您可以使用其他提供程序,例如 libvirt 或 Hyper-v。
更新: Github Actions是另一种选择。只有Mac OS 环境启用了嵌套虚拟化。一个例子是here和here。