【发布时间】:2014-05-29 15:48:06
【问题描述】:
我想为我的开源应用程序设置一个持续交付周期。它基于 Linux 的用户空间文件系统 (FUSE)。我试图在CloudBees' Jenkins 上设置它,它提供了不错的免费帐户,但我没有 root 访问权限,这是有问题的,因为我的项目有很多依赖项。我继续使用Travis CI,它非常适合测试内部 API,因为我拥有安装依赖项的 root 访问权限。但它确实not support FUSE,所以我不能直接在文件系统上运行测试。 根据我使用 Travis CI 的经验,持续交付方法可能会阻止许多错误的发布,并有助于更快地发现问题。
有没有类似Travis CI的服务,集成Github,允许root访问,支持FUSE?
[编辑]
六。建议在 Travis-ci 机器上运行用户模式 Linux,以模拟 FUSE。总结在 Vi.s 帮助下取得的进展:
-
要设置具有更多内存、网络访问和文件系统访问权限的 UML,请执行:
/usr/bin/linux.uml init=script_to_run.sh rootfstype=hostfs rw eth0=slirp mem=2G
在用户脚本中,调用:
# Enable fuse module.
insmod /usr/lib/uml/modules/`uname -r`/kernel/fs/fuse/fuse.ko
# Set up TCP/UDP network access.
ifconfig lo up
ifconfig eth0 10.0.2.15
ip route add default via 10.0.2.1
-
如果您使用 gcc,请设置您的 PATH 变量:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -
如果需要 procfs,请在 UML 中执行:
mount none /proc -t hppfs -
对于 Python,您应该激活 UML 中的虚拟环境:
source /home/travis/virtualenv/python2.6.9/bin/activate
activate 的路径可以通过在启动 UML 之前发出以下命令来找到:
echo "Path to Python executable: "$(which python)
我仍然无法运行 FUSE:
简而言之:
`fuse' likely not compiled with -mcmodel=kernel
insmod: error inserting '/usr/lib/uml/modules/3.2.2/kernel/fs/fuse/fuse.ko': -1 Invalid module format
modprobe: FATAL: Could not load /lib/modules/3.2.2/modules.dep: No such file or directory
modprobe: FATAL: Could not load /lib/modules/3.2.2/modules.dep: No such file or directory
[...]
fuse: device not found, try 'modprobe fuse' first
【问题讨论】:
-
也许 UML(用户模式 linux)可以作为一种解决方法?
-
如果我理解正确的话,这类似于虚拟机。我必须检查为每个测试设置它需要多少资源,也看看这个解决方案是否可行。感谢您的建议。
标签: github fuse continuous-delivery