有没有任何云CI服务允许使用VirtualBox作为提供程序来运行Vagrant虚拟机?
初步调查显示,Travis CI或Circle CI似乎不支持此功能,尽管vagrant-aws插件允许使用AWS服务器作为Vagrant提供程序。这个说法正确吗?
有没有任何云CI服务允许使用VirtualBox作为提供程序来运行Vagrant虚拟机?
初步调查显示,Travis CI或Circle CI似乎不支持此功能,尽管vagrant-aws插件允许使用AWS服务器作为Vagrant提供程序。这个说法正确吗?
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的工作流程,如果您喜欢:
许多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 environment启用了嵌套虚拟化。一个示例在这里和这里。