Giter Club home page Giter Club logo

fisher's People

Contributors

briansmith avatar ndido98 avatar pietroalbini avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fisher's Issues

Add support for socket activation

Socket activation allows to start the process only when an HTTP request is received. Since Fisher is fast enough to start, it might be a nice feature to be able to start it only when needed.

cpu usage of fisher is very high

fisher uses 42% cpu in my Macbook Pro unexpectedly. My configuration is 2Cores/12GB

USER        PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
piaoger    31287  42.1  0.0  2502836    100   ??  R    22Dec17 1387:59.96 fisher /u/hooks --bind 127.0.0.1:9029 --recursive

It's also reproducible in my another Linux machine which configuration is 4cores/8GB.

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                           
15959 uzj       20   0   52372  32208   1468 S   8.6  0.8  10:49.30 fisher    

Optimize Fisher

Currently Fisher isn't too much optimized: it allocates too much RAM, and pulls in dependencies it doesn't fully need. It would be nice to have it optimized for the release.

  • Replace Nickel/Hyper with tiny-http
  • Evaluate removing ring for checking HMAC

Add support for caching

Fisher uses a temporary directory for each job, but this prevents caching of build artifacts to happen, which can slow down builds a lot. A caching mechanism built into Fisher should be added.

Add support for working behind a proxy

Currently, if Fisher is behind a proxy, it will receive the proxy's IP as the source IP address, which is really bad for verifying the autenticity of an hook from its source address. This should be improved.

Hooks containing dots don't work

Hooks containing a dot in the name of the file don't work despite the fact that they get displayed in collected hooks when starting fisher (tested on 1.0.0-beta.2)

Steps to reproduce

  1. Create a hook containing a dot in the name of the file, for example test.something.sh
  2. Start fisher
  3. Run curl http://127.0.0.1:8000/hook/test.something
  4. The response is {"status":"not_found"}

Resolve symlinks when referencing hooks on the filesystem

Currently, Fisher doesn't resolve symlinks in the hook paths, which works fine most of the times, but doesn't work well with live reloading of the hooks.

If each "deploy" of the hook scripts lives in a different directory, and the current one is symlinked to a "current" directory, after reloading even old jobs already in the queue will use the new script. If this is implemented, old jobs would be pointing to the old scripts, and the new ones to the new scripts.

Fisher doesn't compile on macOS

Fisher currently uses the signal crate for signal handling, but it doesn't like macOS so much. While supporting macOS is not one of my goals (mainly because I'm unable to test on it), switching to nix (which supports macOS) for signal handling is quite easy (and it removes a dependency), so why not.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.