Guest User

Untitled

a guest
Oct 23rd, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.16 KB | None | 0 0
  1. set -e # exit on error
  2.  
  3. SCRIPT_NAME="APACHE LINKER" # script name
  4. JENKINS_ROOT=${HUDSON_HOME:-"/var/lib/jenkins"} # set default if HUDSON_HOME is missing
  5. HUDSON_PUBLIC="$JENKINS_ROOT/public" # public folder
  6. HUDSON_BUILDS="$JENKINS_ROOT/builds" # builds folder
  7. HUDSON_BUILDS_JOBDIR="$HUDSON_BUILDS/$JOB_NAME" # builds jobdir folder
  8. HUDSON_PUBLIC_JOBDIR="$HUDSON_PUBLIC/$JOB_NAME" # public jobdir folder
  9.  
  10. if [ -z "$JOB_NAME" ]; then
  11. echo "[$SCRIPT_NAME]: JOB_NAME does not exist"
  12. exit 1
  13. fi
  14.  
  15. MODULES="../../jobs/$JOB_NAME/modules"
  16. TARGET="./"
  17. COMMIT="$(git rev-parse HEAD)"
  18. #BRANCHES="$(for branch in $(git branch -a | grep -v "(no branch)" | cut -c 3-); do [ "$(git rev-parse $branch)" == "$(git rev-parse HEAD)" ] && echo "$(basename $branch)"; done | uniq -u)"
  19. BRANCHES="$(for branch in $(git branch -a | grep -v "(no branch)" | cut -c 3-); do [ "$(git rev-parse $branch)" == "$(git rev-parse HEAD)" ] && echo "$(basename $branch)"; done | uniq)"
  20. BUILD_DATES=""
  21.  
  22. send_message() {
  23. local message=$*
  24. echo -n "[$SCRIPT_NAME] "
  25. echo "$message"
  26. }
  27.  
  28. send_message_nl() {
  29. echo "[$SCRIPT_NAME] ."
  30. }
  31.  
  32. send_message_info() {
  33. local message=$*
  34. echo -n "[$SCRIPT_NAME] "
  35. echo "$message"
  36. }
  37.  
  38. send_message_error() {
  39. local message=$*
  40. echo -n "[$SCRIPT_NAME]: "
  41. echo "$message"
  42. }
  43.  
  44. send_message "------------------------------------------------------------------------"
  45. send_message "RUN $SCRIPT_NAME"
  46. send_message "------------------------------------------------------------------------"
  47.  
  48.  
  49. if [ ! -d "$HUDSON_PUBLIC_JOBDIR" ]; then
  50. mkdir -p "$HUDSON_PUBLIC_JOBDIR" ];
  51. fi
  52.  
  53. send_message_info "Entering Jenkins public folder $HUDSON_PUBLIC_JOBDIR"
  54. cd "$HUDSON_PUBLIC_JOBDIR"
  55. send_message_info "Fetching active symlinks ..."
  56.  
  57. for modulepath in $(ls -d $MODULES/*/); do
  58. buildspath="${modulepath}builds"
  59. builddate="$(ls $buildspath | sort -r | head -n 1)"
  60. buildpath="$buildspath/$builddate"
  61.  
  62. if [ ! -d "$HUDSON_BUILDS_JOBDIR" ]; then
  63. mkdir -p "$HUDSON_BUILDS_JOBDIR"
  64. fi
  65.  
  66. cp -arfp "$buildpath" "$HUDSON_BUILDS_JOBDIR"
  67. for file in $(find $buildpath -name '*.zip'); do
  68. filename="$(basename $file)"
  69. relativepath="../../builds/$JOB_NAME${file#$buildspath}"
  70. ln -sf "$relativepath" "$TARGET$filename"
  71.  
  72. for branch in $BRANCHES; do
  73. ln -sf "$relativepath" "$TARGET$JOB_NAME-$branch-bin.zip"
  74. done
  75. done
  76. done
  77.  
  78. SYMLINK_TARGETS="$(ls -l "$HUDSON_PUBLIC_JOBDIR" | awk -F "-> " '{print $2}' | cut -d"/" -f5 | uniq)"
  79. BUILD_DATES="$(find $HUDSON_BUILDS_JOBDIR/??*/ -maxdepth 0 -type d)"
  80. if [ -n "$BUILD_DATES" ]; then
  81. if [ ! -d "$HUDSON_BUILDS_JOBDIR" ]; then
  82. send_message_error "BUILD directory $HUDSON_BUILDS_JOBDIR does not exist"
  83. exit 1
  84. fi
  85.  
  86. send_message_info "Current active build-dates for $JOB_NAME:"
  87. for build in $BUILD_DATES; do
  88. build=${build/$HUDSON_BUILDS_JOBDIR\//}
  89. build=${build/%\//}
  90. send_message_info ". $build"
  91. done
  92. send_message_nl
  93.  
  94. send_message_info "Entering builds directory $HUDSON_BUILDS_JOBDIR"
  95. cd "$HUDSON_BUILDS_JOBDIR"
  96. send_message_info "Looking for inactive build folders ..."
  97.  
  98. for directory in $BUILD_DATES; do
  99. ACTIVE_BUILD=0
  100. directory=${directory/$HUDSON_BUILDS_JOBDIR\//} # remove HUDSON_BUILDS_JOBDIR from string
  101. directory=${directory/%\//} # remove trailing slash
  102. for build in $SYMLINK_TARGETS; do
  103. if [ "$directory" == "$build" ]; then
  104. send_message_info "Found active build: $build skip deletion"
  105. ACTIVE_BUILD=1
  106. break
  107. fi
  108. done
  109.  
  110. if [ "${directory:0:1}" == "/" ]; then
  111. send_message_error "directory starts with a slash! Possible script failure detected. Exiting ..."
  112. exit 1
  113. fi
  114.  
  115. if [ "${#directory}" -le 4 ]; then
  116. send_message_error "directory has a length that is less or equal four! Possible script failure detected. Exiting ..."
  117. exit 1
  118. fi
  119.  
  120. if [ $ACTIVE_BUILD -eq 0 ]; then
  121. send_message_info "Deleting unused build folder: $directory"
  122. rm -Rf ./"${directory}"
  123. fi
  124. done
  125. fi
  126.  
  127. send_message "------------------------------------------------------------------------"
  128.  
  129. exit 0
Add Comment
Please, Sign In to add comment