在云CI服务上使用Vagrant

Sam*_*rns 13 continuous-integration vagrant travis-ci circleci scrutinizer

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

尽管vagrant-aws插件允许将AWS服务器用作Vagrant提供者,但早期调查显示Travis CI或Circle CI似乎无法做到这一点.它是否正确?

jon*_*ckt 6

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
Run Code Online (Sandbox Code Playgroud)

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!'"
Run Code Online (Sandbox Code Playgroud)

您甚至可以为 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!'"
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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


arm*_*rma 5

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