Spruced up docs and added before/after to wizard

This commit is contained in:
Josh Sherman 2014-12-23 15:28:07 -05:00
parent 2f305d592c
commit d6eb3109f0
2 changed files with 57 additions and 5 deletions

View file

@ -1,4 +1,38 @@
ship
====
# ship
First you build, then you `ship`.
`ship` was born out of [my][joshtronic] desire to have a simple way to pull
down code from Github to a location to a remote server. I wasnt satisfied with
the existing options out there as they often times required manual setup steps
on either the remote server or for new developers on the project.
The only dependencies of `ship` are that you must have access to the repository
because we use `ForwardAgent` and access to the remote server as the configured
user We accomplish this by using `ssh-copy-id username@server` from each
trusted system. This project allows multiple developers to be able to ship code
out to production without setting up deployment keys, webhooks or any other
manual steps when working with a fresh local copy.
## Installation
### OS X
```shell
brew tap fetchlogic/formulae
brew install ship
```
## Usage
### Initializing a project
From the root of the project, run `ship init` and follow the on screen prompts.
This will create a configuration file named `.ship` in the project as well as
initializing the remote deployment location on the specified server.
### Deploying code
Deployments are performed by running `ship` anywhere in a previously
initialized project.
First you build, then you ship. Repeat.

22
ship
View file

@ -1,5 +1,7 @@
#!/bin/bash
SSH="ssh -o ForwardAgent=yes"
case $# in
0)
while [[ "$PWD" != "/" ]]
@ -31,7 +33,7 @@ case $# in
COMMANDS="$COMMANDS $AFTER;"
fi
ssh $USER@$SERVER "$COMMANDS"
$SSH $USER@$SERVER "$COMMANDS"
else
if [[ -e ".ship" ]]
then
@ -68,9 +70,15 @@ case $# in
echo -n "Destination on server to deploy to: "
read DESTINATION
echo -n "Commands to run before shipment (optional): "
read BEFORE
echo -n "Commands to run after shipment (also optional): "
read AFTER
CLONEURL=`git config --get remote.origin.url`
ssh captain@$SERVER "
$SSH $USER@$SERVER "
if [ -a $DESTINATION ]
then
echo "Error: Destination exists"
@ -83,6 +91,16 @@ case $# in
echo "USER=$USER" > .ship
echo "SERVER=$SERVER" >> .ship
echo "DESTINATION=$DESTINATION" >> .ship
if [ -n "$BEFORE" ]
then
echo "BEFORE=$BEFORE" >> .ship
fi
if [ -n "$AFTER" ]
then
echo "AFTER=$AFTER" >> .ship
fi
else
echo "Error: Invalid argument '$1'"
fi