Continuous integration 在云CI服务上使用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服务允许使用VirtualBox作为提供商运行流浪VM

早期调查显示,这似乎不可能与Travis CI或Circle CI一起使用,尽管vagrant aws插件允许将aws服务器用作vagrant提供者。这对吗?

没错

仍然没有CI服务允许通过LXC或Virtualbox运行Vagrant(这很遗憾)

  • 你不能在特拉维斯手下做这件事
  • 不知道其他CI服务,将进一步调查
我希望在此期间,我们将看到CI服务允许使用Virtualbox或LXC运行Vagrant,但目前Docker(及其限制)是唯一的选择



就我个人而言,我很乐意使用它对不同平台/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,因为这里缺少嵌套虚拟化。好消息!非常感谢大家分享这个