jon*_*ckt 5 continuous-integration virtualbox virtual-machine vagrant github-actions
我从这个答案中知道,可以使用 TravisCIlibvirt而不是 VirtualBox 在 TravisCI 上启动并运行 Vagrant Boxes。
GitHub Actions 也可以实现这一点吗?由于新的定价模型,我们将把所有内容从 TravisCI 上移走,因此我们还需要切换基于 Vagrant 的测试用例。
是的,使用(当前是)环境可以实现这一点macos-10.15。您也可以尝试使用,但目前似乎没有适用于 Big Sur 的稳定 VirtualBox 版本。我在https://github.com/jonashackt/vagrant-github-actions创建了一个小示例项目macos-latestmacos-11.0
假设您的存储库中有一个Vagrantfile,如下所示:
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)
然后,您在文件夹中添加一个 GitHub Action 工作流程,例如vagrant-up.yml,.github/workflows如下所示:
name: vagrant-up
on: [push]
jobs:
vagrant-up:
runs-on: macos-10.15
steps:
- uses: actions/checkout@v2
- name: Cache Vagrant boxes
uses: actions/cache@v2
with:
path: ~/.vagrant.d/boxes
key: ${{ runner.os }}-vagrant-${{ hashFiles('Vagrantfile') }}
restore-keys: |
${{ runner.os }}-vagrant-
- 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)
您甚至可以省略缓存操作- 我只是将其添加到此处以展示可能性。它会为您节省几秒钟的时间,这取决于您使用的 VagrantBox。
用于运行 Vagrant 的 GitHub Actions 实现比TravisCI 对应的实现要容易得多,因为您不需要安装 Vagrant 或 VirtualBox - 并且也不需要切换到 libvirt。只需使用https://app.vagrantup.com/boxes/search中您想要的框即可,这非常酷。
| 归档时间: |
|
| 查看次数: |
3090 次 |
| 最近记录: |