Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Shipit, pure JavaScript deployment tool used by Ghost blogging platform (github.com/shipitjs)
81 points by neoziro on Jan 26, 2015 | hide | past | favorite | 46 comments



Glad to see some more effort going into deployment tooling. I think the main goal of reinventing such tools in different languages is to get rid of the need of having dependencies outside of the current project's platform, which makes sense, for me at least.

Shameless plug: I'm the author of Flightplan[1], a library which provides a simple, yet powerful interface to execute sequences of shell commands on local and remote host(s).

[1] https://github.com/pstadler/flightplan


I'm a huge fan of Flightplan. I used it extensively at a past job and added it into our default stack. Every site we worked with (60+ at the time I left) was using Flightplan for deployment.


My childish brain pulled a full-Freudian with that name. Might want to capitalize the I maybe?


My first thought was related to the name too - it's an unfortunate collision with Brad Fitzpatricks' shipit:

http://search.cpan.org/dist/ShipIt/


It's clearly a port of Brad's ShipIt from Perl to JS


I don't know Brad's Shipit, so it's not a port but it is possible that it's the same thing.


I shipmy pants



Yes, it looks like, I didn't know this project.


But ShipIt seems to be more modular and event driven while flightplan is just a rundown of various commands...


You might also be interested in Overcast (I'm the author): https://www.npmjs.com/package/overcast


Nice, i prefer node over ruby, so maybe i'll use this. For the same reason i prefer LESS over SASS (apart from the great performance improvement).


For Less and Sass, it's not very annoying because you don't have to write a lot of ruby code. But writting a complete deployment script if you don't know ruby is very hard... I love to be able to use my favorite JS modules in my deploy script, that's why I wrote Shipit.


That is one solid point. Thanks for helping all of us out!


If you run `npm install -g sass` you'll get the native JS version of SASS.


Thanks, didn't know that. Right now i was using libsass for some projects. It compiles faster than the ruby sass.


The problem is that native sass is not the same version as ruby sass its infuriating.


I am starting to see the light on all this tooling madness. It does not matter: languages and their ecosystems are powerful enough for any project to build their own tools. Projects are fond of their tools, so they give them fancy names and logos, and release them in hopes they are useful to somebody.


When will you release a deployment tool in Haxe?


How is this different from Grunt or Gulp? Is it used with or in place of? After reading the docs I'm not sure I see the difference or the value add.


It leverages 'orchestrate' (which is what gulp uses) to do deploys across a variety of hosts, keeping the old versions around should you need to switch back easily.


But why wouldn't I just use Gulp then?


gulp doesn't define groups of servers, or connect to them over encrypted sockets. This does.

FYI the authors (which I'm not) seem to be gulp fans too, and want to leverage as much as they can.


Try deploying just with grunt and you will see the difference.


The grunt-aws module makes deploying to S3 and cloudfront a breeze. We switched to this for all our FE devs awhile ago and it's been painless.

https://github.com/jpillora/grunt-aws


Is ShipIt an Ansible replacement? The idea of Ansible is good, but I would like a JavaScript based tool and avoid Ruby. Edit: i meant Python


You can do most of your Ansible work without needing to touch Python. I'm a Python programmer, and I've never needed to touch Python (other than running Ansible, which is a Python program) with respect to an Ansible setup.


Shipit can be an Ansible replacement, but there is no command abstraction to Shipit. Shipit is designed to quickly deploy a project on a set of servers not to configure an entire server.


Ansible is written in Python.


what about ruby makes you want to avoid it? strictly curious


Sorry, I meant Python. I am familar with Algol syntax based languages and prefer C/C++/ObjectC/C#/Java/PHP/JS/Go/Rust/Lua/Basic/Pascal/Ada/Smalltalk/Scheme over Python/Ruby/Haskel.


What does Algol syntax have to do with that? Several of the first set of languages you list are not Algol-based, while two of the last three are Algol-syntax-based.


What's the difference between build tool, like gulp and deployment tool like Shipit?


Shipit can run local and SSH commands easily on a group of servers, there is also a set of tasks ready for deployment.


So it's like a javascript version of fabric?


Where is Ghost using this tool?


They used in to deploy projects internally, same for Le Monde. Shipit is not designed to Shipit projects over a lot of servers. It's designed to Shipit small projects or even to ship code on hardware (like raspberry).


I'd guess they use it on their hosted platform.


Would be my guess too, but other than a single PR from one of the core devs I can't find any connection between the projects. Is there any source for this?


It would be cool to see a tutorial on configuring Shipit to do Ghost deployments.


Sweet, i may actually use it, more documentation would be nice though.


If you need more documentation about deploying using Shipit, you can find it in the deploy set of tasks: https://github.com/shipitjs/shipit-deploy


[deleted]


Shipit is an automation and deployment tool, git hook is just a hook on a git command. You can't run a command on 10 servers in parallel using git hook post-receive.


technically, a hook shell script could start 10 background commands, or start 10 commands using GNU Parallel.

This obsession with using a single language for everything is ridiculous and needs to end.


Why Javascript?


> Shipit was built to be a Capistrano alternative for people who don't know ruby, or who experienced some issues with it. If you want to write tasks in JavaScript and enjoy the node ecosystem, Shipit is also for you.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: