Skip to content

14 Ноябрь 2011

88

Git post receive auto deployment hook

images

Один из неприятных моментов в разработке веб приложений — deployment. Вы уже на завершающей стадии, новый функционал уже не добавляется, самое время запускать на сайт тестеров и показывать его заказчику. Так давайте автоматизируем это процесс, а выигранное время потратим на кофе с привлекательными коллегами  :wink:

Когда начинается стадия тестирования — сайт приходится обновлять очень часто. После каждого ‘пака’ багов, нарытых усердными сотрудниками отдела качества. Поэтому вопрос auto-deployment‘а встает весьма остро.

Для решения этой задачи, прекрасно подходит мой любимый git. Удивлены?  :smile:

На самом деле в любой VCS присутствуют хуки. Это своего рода callback функция, вызывающий определенный скрипт на определенных событиях репозитория.

:!: Основное условие:

Центральный гит репозиторий должен быть расположен на той же машине, на которой будет разворачиваться сайт. Это не критичное требование, но оно очень сильно облегчает нашу задачу. И приведенный ниже скрипт будет работать только с этим условием.

:!: Настройка:

  1. Клонируем центральный репо в место, где будет разворачиваться наш сайт. `git clone /home/git-repo/repositories/site.git/ ` (путь до репо подставить свой)
  2. Переходим в ../site.git/hooks
  3. Создаем файл post-receive со следующим содержимым: (настройки поставить свои)
    #!/bin/sh
    #
    # An example hook script for the "post-receive" event.
    #
    # The "post-receive" script is run after receive-pack has accepted a pack
    # and the repository has been updated.  It is passed arguments in through
    # stdin in the form
    #  <oldrev> <newrev> <refname>
    # For example:
    #  aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master
    #
    # see contrib/hooks/ for a sample, or uncomment the next line and
    # rename the file to "post-receive".
    
    #. /usr/share/doc/git-core/contrib/hooks/post-receive-email
    
    while read oldrev newrev refname
    do
    
    	BRANCH='master'
    	DEPLOY_PATH='/opt/www/site.ru/htdocs'
    
    	if [ "${refname}" = "refs/heads/${BRANCH}" ]; then
    		echo "[hook] Updating '${DEPLOY_PATH}' "
                    umask 0002
    		cd $DEPLOY_PATH
    		unset GIT_DIR
    		git checkout $BRANCH > /dev/null
    		git clean -f -d > /dev/null
    		git fetch > /dev/null
    		git reset --hard remotes/origin/$BRANCH > /dev/null
    	fi
    
    done

     

  4. :?:  ВНИМАНИЕ! Хук будет запускаться от пользователя вашего git сервера! У него обязательно должны быть права на изменение каталога с сайтом. Я рекомендую выставить права на папку с сайтом 2775 и внести пользователя git в группу вашего веб-сервера. Ну и все файлы/папки должны иметь владельца в виде пользователя веб-сервера с правами 775 (папки) и 664 (файлы). Массовое изменение прав.
  5. Теперь при push в ваш центральный репо (site.git), в ветку master — будет автоматически обновляться ваш сайт. Ну разве не чудесно?  :smile:

 

 

88 коммент.

Трекбэк / Пинг

  1. Playboi Carti Type Instrumental
  2. Migos Type Beat
  3. دوربین مدار بسته پویابین
  4. بهترین مارک دوربین مدار بسته
  5. High Precision Dosing Peristaltic Pump
  6. military manuals
  7. آموزش نصب دوربین های مدار بسته
  8. Glass Balls
  9. Garden Bridges
  10. آموزش نصب دوربین های مدار بسته
  11. نصب دوربین های مدار بسته
  12. نصب دوربین مدار بسته
  13. Big tit
  14. best work at home jobs 2017
  15. http://www.magnetic.co.uk/Category/magnetic-accessories
  16. http://www.indigo.co
  17. stair supplies
  18. دوربین مدار بسته پویابین
  19. نصب و اجرای دوربین مداربسته
  20. کابینت
  21. نصب دوربین های مدار بسته
  22. games for pc download
  23. apps download for windows 7
  24. pc games for windows 7
  25. apps download for windows 7
  26. free download for windows 10
  27. فروش دوربین های مدار بسته مخفی
  28. دوربین مدار بسته پویابین
  29. games for pc download
  30. بهترین مارک دوربین مدار بسته
  31. آموزش نصب دوربین های مدار بسته
  32. pc games for windows xp
  33. download pc games for windows 7
  34. Chanel shoes winter stock
  35. نصب دوربین های مدار بسته
  36. نصب و اجرای دوربین مداربسته
  37. فروش دوربین های مدار بسته مخفی
  38. دوربین مدار بسته پویابین
  39. بهترین مارک دوربین مدار بسته
  40. lucas lucco
  41. 동화세상에듀코
  42. fall fashion sale
  43. fall fashion sale
  44. בלוג תמונות
  45. runway magazine
  46. دوربین مدار بسته
  47. دوربین مدار بسته ارزان
  48. دوربین های مدار بسته
  49. دوربین های مدار بسته
  50. Vibrator Review
  51. glass juicer sex toy
  52. footwear
  53. 脱毛
  54. Stockton taxi to Sacramento airport
  55. خرید ، فروش دوربین مدار بسته
  56. دوربین مدار بسته بی سیم وایرلس
  57. دوربین دنده عقب
  58. دوربین مدار بسته ارزان
  59. دوربین های مدار بسته
  60. خرید ، فروش دوربین مدار بسته
  61. دوربین مدار بسته آنالوگ
  62. دوربین مدار بسته بی سیم وایرلس
  63. دوربین دنده عقب
  64. دوربین مدار بسته آنالوگ
  65. دوربین مدار بسته هایک ویژن
  66. فروش دوربین مدار بسته
  67. نصاب دوربین مدار بسته نیازمندیم
  68. دوربین مدار بسته هایک ویژن
  69. دوربین مدار بسته هایک ویژن
  70. تردمیل باشگاهی
  71. دوچرخه ثابت
  72. اسکی فضایی الپتیکال
  73. تردمیل خانگی
  74. تجهیزات ورزشی پویاجیم
  75. پک دوربین مداربسته ahd
  76. تولید محتوا
  77. بازاریابی شبکه های اجتماعی
  78. دوربین مدار بسته دیجی کالا
  79. rsform free download joomla 2.5
  80. شرکت دوربین مدار بسته
  81. فروش دوربین مدار بسته
  82. دوربین مدار بسته وای فای
  83. بهترین دوربین دنده عقب
  84. قیمت دوربین آنالوگ
  85. هایک ویژن
  86. بازاریابی محتوا
  87. بازاریابی شبکه اجتماعی
  88. ترمیم مو و کاشت مو

Обсуждение закрыто.