在云 CI 服务上使用 Vagrant
Using Vagrant on cloud CI services
是否有任何云 CI 服务允许 Vagrant VM 运行 使用 VirtualBox 作为提供者?
早期调查表明,这似乎无法通过 Travis CI 或 Circle CI 实现,尽管 vagrant-aws 插件允许使用 AWS 服务器作为 Vagrant 提供商。这是正确的吗?
许多 CI 服务不允许通过 LXC 或 Virtualbox 运行 Vagrant,因为它需要嵌套虚拟化(运行虚拟机中的虚拟机)或配置的纯裸机服务器给你。
2021 年当前(更新)情况:
- Github动作可以做到
- Travis 能够 运行 Vagrant 有一些解决方法。
- AppVeyor 允许 运行ning VirtualBox(非免费计划)。
- 你不能在 CodeShip 下
- You can't under CircleCI
- 不知道其他 CI 服务,将进一步调查。
我希望在此期间我们会看到 CI 服务允许 运行 使用 Virtualbox 或 LXC 的 Vagrant,但目前 Docker(有其局限性)是唯一的选择.
就个人而言,我很乐意通过 Test-Kitchen CI 或类似的方式将它用于针对不同 platforms/linux 发行版的集成测试。
2021 年 1 月更新:GitHub Actions also supports Vagrant - and Vagrant/VirtualBox are both installed out-of-the-box in the MacOS environment (not on Linux or Windows currently!). See the possible environments here. Therefore I created a fully comprehensible example project at: https://github.com/jonashackt/vagrant-github-actions
1.: 创建一个 Vagrantfile(并且您不限于像 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
目录中像这样 vagrant-up.yml 创建一个 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!'"
你甚至可以 add caching for the Vagran boxes,这会让你安全几秒钟:)
2020 年初:
TravisCI 现在终于可以 运行 Vagrant 了! 感谢 this GitHub issue I learned about libvirt and KVM, which could be used together with the vagrant-libvirt Plugin 到 运行 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!'"
在 generic
Vagrant Box images from Vagrant Cloud 的帮助下,您还可以建立在 Travis 上使用 Vagrant + libvirt + KVM 并在本地计算机上使用 Vagrant + VirtualBox 的工作流程,如果您愿意:
我在这里创建了一个完全可用且 100% 可理解的示例项目:https://github.com/jonashackt/vagrant-travisci-libvrt
AppVeyor 使用 VirtualBox 作为提供程序运行 Vagrant。此外,您可以使用其他提供程序,例如 libvirt 或 Hyper-v.
更新:
Github Actions is another option. Only Mac OS environment has nested virtualization enabled. An example is here and here.
是否有任何云 CI 服务允许 Vagrant VM 运行 使用 VirtualBox 作为提供者?
早期调查表明,这似乎无法通过 Travis CI 或 Circle CI 实现,尽管 vagrant-aws 插件允许使用 AWS 服务器作为 Vagrant 提供商。这是正确的吗?
许多 CI 服务不允许通过 LXC 或 Virtualbox 运行 Vagrant,因为它需要嵌套虚拟化(运行虚拟机中的虚拟机)或配置的纯裸机服务器给你。
2021 年当前(更新)情况:
- Github动作可以做到
- Travis 能够 运行 Vagrant 有一些解决方法。
- AppVeyor 允许 运行ning VirtualBox(非免费计划)。
- 你不能在 CodeShip 下
- You can't under CircleCI
- 不知道其他 CI 服务,将进一步调查。
我希望在此期间我们会看到 CI 服务允许 运行 使用 Virtualbox 或 LXC 的 Vagrant,但目前 Docker(有其局限性)是唯一的选择.
就个人而言,我很乐意通过 Test-Kitchen CI 或类似的方式将它用于针对不同 platforms/linux 发行版的集成测试。
2021 年 1 月更新:GitHub Actions also supports Vagrant - and Vagrant/VirtualBox are both installed out-of-the-box in the MacOS environment (not on Linux or Windows currently!). See the possible environments here. Therefore I created a fully comprehensible example project at: https://github.com/jonashackt/vagrant-github-actions
1.: 创建一个 Vagrantfile(并且您不限于像 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
目录中像这样 vagrant-up.yml 创建一个 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!'"
你甚至可以 add caching for the Vagran boxes,这会让你安全几秒钟:)
2020 年初:
TravisCI 现在终于可以 运行 Vagrant 了! 感谢 this GitHub issue I learned about libvirt and KVM, which could be used together with the vagrant-libvirt Plugin 到 运行 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!'"
在 generic
Vagrant Box images from Vagrant Cloud 的帮助下,您还可以建立在 Travis 上使用 Vagrant + libvirt + KVM 并在本地计算机上使用 Vagrant + VirtualBox 的工作流程,如果您愿意:
我在这里创建了一个完全可用且 100% 可理解的示例项目:https://github.com/jonashackt/vagrant-travisci-libvrt
AppVeyor 使用 VirtualBox 作为提供程序运行 Vagrant。此外,您可以使用其他提供程序,例如 libvirt 或 Hyper-v.
更新: Github Actions is another option. Only Mac OS environment has nested virtualization enabled. An example is here and here.