This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| jenkins [2014/09/12 13:21] – created admin | jenkins [2015/01/03 20:15] (current) – admin | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| <code bash> | <code bash> | ||
| - | #### | ||
| - | ### production.config.sh | ||
| - | #### | ||
| - | ################# | + | ############### | 
| - | + | ## Config BEGIN | |
| + | ############### | ||
| ## | ## | ||
| # Server name or IP address where the code should be deployed | # Server name or IP address where the code should be deployed | ||
| Line 13: | Line 12: | ||
| # Use public-key authentication! | # Use public-key authentication! | ||
| ## | ## | ||
| - | SERVER=' | + | SERVER=' | 
| + | |||
| ## | ## | ||
| # User name for server | # User name for server | ||
| Line 21: | Line 20: | ||
| ## | ## | ||
| USER=' | USER=' | ||
| + | |||
| ## | ## | ||
| # Remote directory where the code should be deployed | # Remote directory where the code should be deployed | ||
| Line 27: | Line 26: | ||
| # Use public-key authentication! | # Use public-key authentication! | ||
| ## | ## | ||
| - | REMOTE_DESTINATION='/ | + | REMOTE_DESTINATION='/ | 
| + | |||
| ## | ## | ||
| # List of files and directories with relative paths to the git repository root which should | # List of files and directories with relative paths to the git repository root which should | ||
| Line 47: | Line 46: | ||
| ' | ' | ||
| ) | ) | ||
| + | |||
| ## | ## | ||
| # List shell commands which should be executed afterwards | # List shell commands which should be executed afterwards | ||
| Line 56: | Line 55: | ||
| "find ${REMOTE_DESTINATION}/ | "find ${REMOTE_DESTINATION}/ | ||
| ) | ) | ||
| - | |||
| - | ############################ | ||
| ## | ## | ||
| Line 63: | Line 60: | ||
| ## | ## | ||
| SHOW_MODIFIED=true | SHOW_MODIFIED=true | ||
| + | |||
| ## | ## | ||
| # Git hash file | # Git hash file | ||
| Line 69: | Line 66: | ||
| HASH_FILE=' | HASH_FILE=' | ||
| - | ## | + | ################################################## | 
| - | # Remote lock file | + | ## Config END - NO NEED TO CHANGE ANYTHING BELOW HERE | 
| - | ## | + | ################################################## | 
| - | LOCK_FILE=' | + | |
| - | + | ||
| - | ### | + | |
| - | #  THE MAGIC HAPPENS | + | |
| - | ### | + | |
| echo -n "Store head commit hash to file in local git clone ... " | echo -n "Store head commit hash to file in local git clone ... " | ||
| CURRENT_HASH=`git log --format=" | CURRENT_HASH=`git log --format=" | ||
| echo ${CURRENT_HASH} > ${HASH_FILE} | echo ${CURRENT_HASH} > ${HASH_FILE} | ||
| + | |||
| echo -n " | echo -n " | ||
| REMOTE_HASH=`scp -q ${USER}@${SERVER}: | REMOTE_HASH=`scp -q ${USER}@${SERVER}: | ||
| + | |||
| + | |||
| + | ####################### | ||
| + | # Prepare file listings | ||
| + | ####################### | ||
| if test -z ${REMOTE_HASH}; | if test -z ${REMOTE_HASH}; | ||
| echo -n " | echo -n " | ||
| INITIAL_HASH=`git log --format=" | INITIAL_HASH=`git log --format=" | ||
| + | |||
| if [ " | if [ " | ||
| echo -n " | echo -n " | ||
| Line 102: | Line 99: | ||
| exit 0 | exit 0 | ||
| fi | fi | ||
| + | |||
| echo -n " | echo -n " | ||
| while IFS= read -r -d $' | while IFS= read -r -d $' | ||
| Line 114: | Line 111: | ||
| fi | fi | ||
| fi | fi | ||
| + | |||
| + | ############################################################## | ||
| + | # Housekeeping - delete/move files declared in RM_LIST/ | ||
| + | ############################################################## | ||
| echo -n " | echo -n " | ||
| Line 120: | Line 121: | ||
| done | done | ||
| - | #echo -n " | + | if [[ -z " | 
| - | #for index in ${!MV_LIST[*]} ; do | + | echo -n " | 
| - | # mv ${MV_LIST[$index]} | + | for index in ${!MV_LIST[*]} ; do | 
| - | #done | + | mv ${MV_LIST[$index]} | 
| + | done | ||
| + | fi | ||
| + | |||
| echo -n " | echo -n " | ||
| find . -name " | find . -name " | ||
| - | echo " | + | |
| + | ################################# | ||
| + | # Check remote just before upload | ||
| + | ################################# | ||
| echo -n "Check if deployment directory exists on server ... " | echo -n "Check if deployment directory exists on server ... " | ||
| if ssh ${USER}@${SERVER} "test -d ${REMOTE_DESTINATION}"; | if ssh ${USER}@${SERVER} "test -d ${REMOTE_DESTINATION}"; | ||
| - | echo " | ||
| echo -n "Check if deployment directory is writeable on server ... " | echo -n "Check if deployment directory is writeable on server ... " | ||
| if ssh ${USER}@${SERVER} "test -w ${REMOTE_DESTINATION}"; | if ssh ${USER}@${SERVER} "test -w ${REMOTE_DESTINATION}"; | ||
| echo " | echo " | ||
| - | echo -n "Check if deployment is currently active on server ... " | ||
| - | if ssh ${USER}@${SERVER} "test -f ${REMOTE_DESTINATION}/ | ||
| - | echo " | ||
| - | echo " | ||
| - | rm -fR ${WORKSPACE} | ||
| - | exit 1 | ||
| - | else | ||
| - | echo " | ||
| - | ssh ${USER}@${SERVER} "touch ${REMOTE_DESTINATION}/ | ||
| - | fi | ||
| else | else | ||
| echo " | echo " | ||
| Line 152: | Line 147: | ||
| fi | fi | ||
| else | else | ||
| - | echo " | ||
| echo -n " | echo -n " | ||
| ssh ${USER}@${SERVER} "mkdir -p ${REMOTE_DESTINATION}" | ssh ${USER}@${SERVER} "mkdir -p ${REMOTE_DESTINATION}" | ||
| Line 164: | Line 158: | ||
| fi | fi | ||
| fi | fi | ||
| + | |||
| echo -n "Copy files to server ... " | echo -n "Copy files to server ... " | ||
| - | rsync --checksum --links --compress --recursive ${WORKSPACE}/ | + | rsync --checksum --links --compress --recursive | 
| echo " | echo " | ||
| + | |||
| + | ################################################### | ||
| + | # Comparing hashes | ||
| + | # [if] Initial Upload | ||
| + | # [else] Delete files on remote according to git | ||
| + | ################################################### | ||
| + | |||
| if test -z " | if test -z " | ||
| if [ " | if [ " | ||
| Line 182: | Line 183: | ||
| done | done | ||
| echo " | echo " | ||
| + | |||
| if [ " | if [ " | ||
| echo "List modified files between ${REMOTE_HASH} and ${CURRENT_HASH}:" | echo "List modified files between ${REMOTE_HASH} and ${CURRENT_HASH}:" | ||
| Line 196: | Line 197: | ||
| fi | fi | ||
| fi | fi | ||
| + | |||
| + | ####################################### | ||
| + | # Some housekeeping on local and remote | ||
| + | ####################################### | ||
| echo -n " | echo -n " | ||
| for COMMAND in " | for COMMAND in " | ||
| - | ssh ${USER}@${SERVER} ${COMMAND} | + | ssh ${USER}@${SERVER} | 
| done | done | ||
| + | |||
| echo -n " | echo -n " | ||
| rm -fR ${WORKSPACE} | rm -fR ${WORKSPACE} | ||
| - | + | ||
| - | echo -n " | + | |
| - | ssh ${USER}@${SERVER} "rm -f ${REMOTE_DESTINATION}/ | + | |
| echo 'Danke DZI - und tschüss!' | echo 'Danke DZI - und tschüss!' | ||
| - | |||
| </ | </ | ||