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!' | ||
- | |||
</ | </ | ||