49 comments

[ 4.2 ms ] story [ 515 ms ] thread
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.
(comment 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.
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.
Where is Ghost using this tool?
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?
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).
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
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.
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.
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?
(comment deleted)
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.
Shipit can run local and SSH commands easily on a group of servers, there is also a set of tasks ready for deployment.
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.

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?
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.
It would be cool to see a tutorial on configuring Shipit to do Ghost deployments.