Continuous Delivery for FUSE OSS and Github -
i set continuous delivery cycle open source application. based on linux's filesystem in userspace (fuse). tried set on cloudbees' jenkins, provided decent free accounts, did not have root access, problematic project has many dependencies. went on use travis ci, works great testing internal apis, since have root access install dependencies. not support fuse, cannot run tests on filesystem directly. according experience travis ci, continuous delivery approach prevent many bugs being released , identify problems more quickly.
is there service similar travis ci, integrates github, allows root access, , supports fuse?
[edit]
vi. suggests run user mode linux on travis-ci machine, emulate fuse. summarize progress achieved vi.s help:
for setting uml more memory, network access , access file system execute:
/usr/bin/linux.uml init=script_to_run.sh rootfstype=hostfs rw eth0=slirp mem=2g
inside user script, call:
# enable fuse module. insmod /usr/lib/uml/modules/`uname -r`/kernel/fs/fuse/fuse.ko # set tcp/udp network access. ifconfig lo ifconfig eth0 10.0.2.15 ip route add default via 10.0.2.1
if work gcc, set path variable:
export path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
if need procfs, execute inside uml:
mount none /proc -t hppfs
for python, should activate virtual environment inside uml:
source /home/travis/virtualenv/python2.6.9/bin/activate
the path activate
can found issuing following command before starting uml:
echo "path python executable: "$(which python)
still cannot run fuse:
in short:
`fuse' not compiled -mcmodel=kernel insmod: error inserting '/usr/lib/uml/modules/3.2.2/kernel/fs/fuse/fuse.ko': -1 invalid module format modprobe: fatal: not load /lib/modules/3.2.2/modules.dep: no such file or directory modprobe: fatal: not load /lib/modules/3.2.2/modules.dep: no such file or directory [...] fuse: device not found, try 'modprobe fuse' first
travis-ci allows installing system packages, including uml (user mode linux).
you can start application inside uml (with helper script). example: https://travis-ci.org/vi/execfuse/builds/47789978
here helper script:
#!/bin/bash curdir="`pwd`" cat > umltest.inner.sh <<eof #!/bin/sh ( export path="$path" set -e set -x insmod /usr/lib/uml/modules/\`uname -r\`/kernel/fs/fuse/fuse.ko cd "$curdir" ./tests.sh echo success ) echo "\$?" > "$curdir"/umltest.status halt -f eof chmod +x umltest.inner.sh /usr/bin/linux.uml init=`pwd`/umltest.inner.sh rootfstype=hostfs rw exit $(<umltest.status)
supplementary commands in .travis.yml
:
- sudo apt-get install -qq libfuse-dev pkg-config fuse user-mode-linux - sudo mknod /dev/fuse c 10 229 - sudo chmod 666 /dev/fuse
Comments
Post a Comment