Nie udało nam się wczytać Disqusa. Jeśli jesteś moderatorem, odwiedź nasz poradnik rozwiązywania problemów.
Już wiem, partycja zamontowana jest jako `noexec`
Bardzo fajny sposób :) Dzięki wielkie!
Nie lepiej zainstalować git ftp?
nie.
Proste. Korzystam z tego przy prostych projektach.
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 ?
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ę.
(usunięty)
Ten trigger wywołuje się również przy mergowaniu przez GitLaba na przykład z brancha development do mastera ?
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
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...
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.
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
Super!
ps. tagi html pre/post, poprawiłem Ci komentarz. DZIEKI!!!
"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!
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ć?