Nie udało nam się wczytać Disqusa. Jeśli jesteś moderatorem, odwiedź nasz poradnik rozwiązywania problemów.

luk • 6 lat temu

Zrobiłem tak jak w Twoim poradniku, ale hook `post-receive` nie chce się wykonać

Uprawnienia sprawdziłem (755), na serwerze ścieżki work-tree i git-dir też sprawdziłem, wszystko jest poprawnie, a mimo to nie chce wykonać hooka (sam push się wykonuje)

Czy są jakieś typowe przypadki, gdzie jest problem z wykonaniem hooka?
Co jeszcze powinienem sprawdzić?

luk • 6 lat temu

Już wiem, partycja zamontowana jest jako `noexec`

Marcin Sromek • 8 lat temu

Bardzo fajny sposób :) Dzięki wielkie!

Sergiusz Gieszczyk • 9 lat temu

Nie lepiej zainstalować git ftp?

nrm • 9 lat temu

nie.

Michał Kortas • 9 lat temu

Proste. Korzystam z tego przy prostych projektach.

Jakub Stephan • 9 lat temu

Dobry artykuł :)

Mam tylko pytanie czy update triggeruje się przy każdym pushu na brancha live, i czy live jest to nastwa brancha ?

Czy budowanie wykonuje się z default czyli pewnie z mastera ?

nrm • 9 lat temu

Tak, przy każdym bo na zdalnym to jest hook który działa automatycznie jak coś dostanie. No i jest to prosty hook który w zasadzie nic więcej nie robi, nie sprawdza, nie ma żadnej dodatkowej logiki. Tylko przerzuca do katalogu wykonywalnego.

Tak, z mastera bo to jest skrót od git push live master i tym samym możesz zrobić sobie z innych branchy czy też zrobić kilka środowisk. Ogólnie to jest taki prosty sposób na mini projekty więc zakładam, że raczej nikt poza takie proste użīcie nie wyjdzie ale może się mylę.

Jakub Stephan • 9 lat temu

(usunięty)

Jakub Stephan • 9 lat temu

Ten trigger wywołuje się również przy mergowaniu przez GitLaba na przykład z brancha development do mastera ?

Paweł Podolski • 9 lat temu

Hooki można "oszukać" na wiele prostych sposobów, bo robią tylko i aż to, pod co są "zahaczone". Możesz zrobić merge(lub rebase), a potem reset indeksu do wcześniejszego mastera, commit i git push live. Dla znających gerrita to żadna nowość. Tutaj jest hook na post receive. Można dodać na post-merge, ale ja bym się bał, bo czasem się zdarza, że po merge i tak trzeba posprzątać i zrobić drugiego pusha;) uff. A czy to będzie gitlab, bitbucket czy inny serwis- nie ma znaczenia

Jakub Skałecki • 9 lat temu

Dobry, prosty sposób :) Czy gdybyśmy mieli nieco bardziej skomplikowany deploy, i chcielibyśmy otrzymać info po zrobieniu pusha czy wszystko jest ok, to da się to zrobić? Tzn "wysłać" z post-receive wiadomość do naszego terminala?

Dodatkowo jeszcze słyszałem (nie używałem) że fajnym i dość prostym rozwiązaniem jest Dokku (http://dokku.viewdocs.io/do...

nrm • 9 lat temu

O, ciekawe pytanie zadałeś. Nigdy nie szukałem bo samo popchnięcie mi wystarcza, nie za bardzo ma się tam coś wywalić. Nie znalazłem w dokumentacji jak zrobić żeby push na remote zwrócił wynik swojego działania z remote konsoli.

Piotr • 9 lat temu

Napisałem kiedyś taki skrypcik.
Jeżeli push jest do mastera, wszystko idzie live. W innym wypadku idzie na instancję testową, trzymaną obok :)

Można do oczywiście ulepszyć i tworzyć osobne instancje testowe per-branch, ale w tym projekcie to było zbędne.

Dodatkowo cały output wraca, mam więc info czy poprawnie wygenerował assety i wyczyścił cache

PS. Da się tutaj formatować kod? :D


#!/bin/bash

while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
if [ "master" == "$branch" ]; then
PREFIX="/home/user/web"
else
PREFIX="/home/user/test"
fi

echo "Updating files"
git --work-tree=$PREFIX --git-dir=/home/user/git checkout $branch -f

cd $PREFIX

echo "Generating assets"
"$PREFIX/node_modules/.bin/gulp"

echo "Clearing cache"
redis-cli flushall
done
nrm • 9 lat temu

Super!

ps. tagi html pre/post, poprawiłem Ci komentarz. DZIEKI!!!

Jakub Skałecki • 9 lat temu

"Dodatkowo cały output wraca, mam więc info czy poprawnie wygenerował assety i wyczyścił cache"

Dzięki, właśnie o to mi chodziło!