2015-05-29 27 views
9

Tak więc prowadziłem tę dyskusję z kilkoma współpracownikami i chciałbym, żeby inni ludzie to rozważyli. Jestem ciekawy, co robią inni deweloperzy.Czy powinieneś sprawdzić swoje skompilowane aktywa w Git?

Co lubię robić, to zignorować cały folder budowy/aktywów z repozytorium. Ten folder zawiera moje skompilowane pliki CSS, JavaScript i skompresowane obrazy. Sądzę, że tylko pliki źródłowe powinny zostać sprawdzone. Uważam to za denerwujące, że za każdym razem, gdy dokonuję zmiany w arkuszu stylów lub pliku JS, muszę sprawdzić plik źródłowy I nową skompilowaną wersję. Wprowadza to także konflikty scalania i inne problemy, gdy wiele osób pracuje nad projektem. Chciałbym, aby repo było przyjemne i lekkie, a następnie poproś dewelopera, aby zbudował projekt lokalnie, aby go skonfigurować. Lub po wdrożeniu, niech serwer zbuduje projekt.

Jest to problem, ponieważ moi współpracownicy używają Git jako procesu wdrażania. Więc jeśli chcesz wdrożyć, sprawdź kod w git, wciśnij go do zdalnego repozytorium, a następnie SSH do serwera i wykonaj git fetch & & git pull. Oznacza to, że WSZYSTKIE pliki stron internetowych muszą żyć w repozytorium. Muszę teraz sprawdzić w moim folderze aktywów.

Jak sobie z tym radzicie? Używam bedrock-ansible dla witryny Wordpress i istnieje opcja uruchomienia niektórych poleceń tuż przed uruchomieniem, więc skonfigurowałem go do uruchomienia npm install && gulp build i zbudowania projektu, ale problem jest zbyt powolny. Sposób działania podprogramu polega na tym, że tworzy on nowy katalog wydania dla każdego wdrożenia i po prostu dowiązuje symbolicznie do najnowszego katalogu current. Więc za każdym razem, gdy wdrażałem, działało npm install, gdy w rzeczywistości potrzebuję tych zależności tylko w jednym wspólnym katalogu. Może być jakiś sposób, aby to zrobić z npm install --prefix install/dir, ale jeszcze tego nie testowałem. Myślę, że może wprowadzić więcej problemów.

Na razie musiałem sprawdzić wszystkie moje zmaterializowane zasoby, aby uzyskać poprawkę, aby to działało. Ale w moim zadaniu gulp watch nie mam żadnych zminimalizowania, ale kiedy chcę wdrożyć, chcę najpierw uruchomić gulp build, który zminimalizuje i ugnie wszystko - tak technicznie zawsze będę musiał zatwierdzić, kiedy chcę wdrożyć Strona. To bałagan. Jak myślisz, co to jest dobry sposób na radzenie sobie z tym?

Odpowiedz

0

Zamiast bezpośrednio sshing do serwera, można utworzyć utworzyć zadanie, że kiedy uruchamiane lokalnie wykonuje następujące operacje:

  • stłuczki wersję
  • zbudować projekt
  • dodać skompilowane aktywa git z opcją --force
  • zobowiązuje zmiany
  • tworzy znaki
  • wypycha wszystko do zdalnego rep ository
  • sshs do serwera
  • ciągnie nowych aktywów
2

gulp build mógł umieścić wszystkie skompilowane pliki w katalogu dist/ i gulp publish mogłoby pchnąć ten katalog na pilocie. Można użyć do tego git-directory-deploy:

$ git-directory-deploy --directory dist --branch master 

Albo można ręcznie skonfigurować osobny oddział dla zebranych aktywów i przesunąć go do serwera zdalnego podczas wdrażania swojej stronie internetowej (this SO answer może pomóc).

W ten sposób można zachować czystą historię w branży programistycznej i nie martwić się konfliktami scalania, a jednocześnie używać Git jako procesu wdrażania.