start-queue.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/bin/sh
  2. # Copyright (c) 2013 Google Inc. All rights reserved.
  3. #
  4. # Redistribution and use in source and binary forms, with or without
  5. # modification, are permitted provided that the following conditions are
  6. # met:
  7. #
  8. # * Redistributions of source code must retain the above copyright
  9. # notice, this list of conditions and the following disclaimer.
  10. # * Redistributions in binary form must reproduce the above
  11. # copyright notice, this list of conditions and the following disclaimer
  12. # in the documentation and/or other materials provided with the
  13. # distribution.
  14. #
  15. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  16. # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  17. # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  18. # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  19. # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  20. # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  21. # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  22. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  23. # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  24. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  25. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  26. USAGE="Usage: start-queue-loop.sh [OPTIONS] QUEUE_NAME BOT_ID RESET_AFTER_ITERATION
  27. -r RESET_SCRIPT A bash script to be run every cycle just before the queue starts up again.
  28. -p QUEUE_PARAMS Additional parameters to be given to the queue's execution command."
  29. while getopts "r:p:" FLAG
  30. do
  31. case $FLAG in
  32. r) RESET_SCRIPT=$OPTARG;;
  33. p) QUEUE_PARAMS=$OPTARG;;
  34. esac
  35. done
  36. shift $((OPTIND-1))
  37. if [[ "$#" -ne 3 ]]; then
  38. echo "$USAGE"
  39. exit 1
  40. fi
  41. QUEUE_NAME=$1
  42. BOT_ID=$2
  43. RESET_AFTER_ITERATION=$3
  44. cd /mnt/git/webkit-$QUEUE_NAME
  45. while :
  46. do
  47. # This clears any temporary file leaks after running tests.
  48. # Not the nicest solution but it will keep the queues running instead of
  49. # filling up all remaining disk space.
  50. # NOTE: This will clear any Chromium browser temporary files running on the
  51. # machine as well. Not advised to run this while using Chrome.
  52. find /tmp -name ".org.chromium.Chromium.*" | xargs rm -rf
  53. # This somewhat quirky sequence of steps seems to clear up all the broken
  54. # git situations we've gotten ourself into in the past.
  55. git clean -f -d # Remove any left-over layout test results, added files, etc.
  56. git rebase --abort # If we got killed during a git rebase, we need to clean up.
  57. git fetch origin # Avoid updating the working copy to a stale revision.
  58. git checkout origin/master -f
  59. git branch -D master
  60. git checkout origin/master -b master
  61. # Most queues auto-update as part of their normal operation, but updating
  62. # here makes sure that we get the latest version of the master process.
  63. ./Tools/Scripts/update-webkit
  64. # test-webkitpy has code to remove orphaned .pyc files, so we
  65. # run it before running webkit-patch to avoid stale .pyc files
  66. # preventing webkit-patch from launching.
  67. ./Tools/Scripts/test-webkitpy
  68. # Run the given reset script.
  69. if [[ -n "$RESET_SCRIPT" ]]; then
  70. bash "$RESET_SCRIPT"
  71. fi
  72. # We use --exit-after-iteration to pick up any changes to webkit-patch, including
  73. # changes to the contributors.json file.
  74. ./Tools/Scripts/webkit-patch $QUEUE_NAME --bot-id=$BOT_ID --no-confirm --exit-after-iteration $RESET_AFTER_ITERATION $QUEUE_PARAMS
  75. done