I’ve been getting comfortable with Circle at my employer recently, and decided to use it for one of my Open-Source projects, vzvol, after finding some new bugs in the program after a recent update. Until now, I’ve tested it manually, which is where the bugs managed to find a place to hide.
While initially developed for FreeBSD, I’ve since ported vzvol to function on Linux as well, so that’s no issue.
The thing is, it directly interacts with ZFS, so I can’t test it without ZFS.
A docker image can maybe sorta mount ZFS as FUSE with some host kajiggery, but that’s not how I want to roll.
I saw the Machine executor type, and have a few questions:
- What images can be used besides Circle’s? Ideally, a minimum of Ubuntu 16.04 is needed on my end, so I can simply kldload (or whatever the Linux equivalent is) ZFS. How would I use them? What format do they need to be in?
- How full is the root control? Is it a raw VM? A container taking up a whole VM? Can I create filesystems, disk images for loopback devices, load kernel modules?
TL;DR, I’d like to use a Machine executor, create a disk image, mount it as a loopback device, kldload the ZFS kernel module, install the userland tools, and then format the disk image as a zpool, for use in testing my code.
If I can do all of what I need, I’d love to use CircleCI for vzvol, and numerous other FOSS projects I’m either working on or will be working on eventually. (I really don’t want to have to set up Jenkins.)