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:

  1. 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 
  1. if work gcc, set path variable:

    export path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
  2. if need procfs, execute inside uml:

    mount none /proc -t hppfs 
  3. 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

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -