Continuous integration 在云CI服务上使用Vagrant
是否有任何云CI服务允许使用VirtualBox作为提供商运行流浪VM 早期调查显示,这似乎不可能与Travis CI或Circle CI一起使用,尽管vagrant aws插件允许将aws服务器用作vagrant提供者。这对吗?没错 仍然没有CI服务允许通过LXC或Virtualbox运行Vagrant(这很遗憾)Continuous integration 在云CI服务上使用Vagrant,continuous-integration,vagrant,travis-ci,circleci,scrutinizer,Continuous Integration,Vagrant,Travis Ci,Circleci,Scrutinizer,是否有任何云CI服务允许使用VirtualBox作为提供商运行流浪VM 早期调查显示,这似乎不可能与Travis CI或Circle CI一起使用,尽管vagrant aws插件允许将aws服务器用作vagrant提供者。这对吗?没错 仍然没有CI服务允许通过LXC或Virtualbox运行Vagrant(这很遗憾) 你不能在特拉维斯手下做这件事 不知道其他CI服务,将进一步调查 我希望在此期间,我们将看到CI服务允许使用Virtualbox或LXC运行Vagrant,但目前Docker
- 你不能在特拉维斯手下做这件事
- 不知道其他CI服务,将进一步调查
就我个人而言,我很乐意使用它对不同平台/linux发行版进行集成测试。更新2021年1月:还支持Vagrant-and(或Windows当前!)。看。因此,我在以下位置创建了一个完全可理解的示例项目: 1.:创建一个(与Travis一样,您不局限于libvirt,您有一个完整的VirtualBox环境,其中嵌套的虚拟化在GitHub操作上工作!),如下所示:
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/workflows
目录中创建一个GitHub操作工作流,如下所示:
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!'"
您甚至可以,这将为您节省几秒钟:)
2020年初: TravisCI现在终于可以流浪了多亏了我了解了和KVM,它可以和一起在TravisCI上运行流浪者箱 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!'"
在的帮助下,您还可以在Travis上使用Vagrant+libvirt+KVM,在本地计算机上使用Vagrant+VirtualBox,如果您愿意:
我在这里创建了一个完全工作且100%可理解的示例项目:使用VirtualBox作为提供者运行Vagrant。此外,您还可以使用其他提供商,如libvirt或Hyper-v
更新:
这是另一种选择。仅启用了嵌套虚拟化。一个例子是和。AppVeyor允许运行VirtualBox。这个答案不再正确,因为从2020年初开始,Travis就可以运行Vagrant,现在GitHub Actions也可以。AppVeyor在免费计划中并不完全支持Vagrant,因为这里缺少嵌套虚拟化。好消息!非常感谢大家分享这个