2013-03-05 13 views
19

Zbudowałem lokalnie lokację z Jekyll i pchnąłem ją do nowego master repo (username.github.com), a strona działa świetnie. Moje pytanie brzmi: jak przenieść po prostu część możliwą do wdrożenia, katalog _ ,, na gałąź strony gh? A może zawartość tego katalogu, jeśli jest to najlepszy sposób na wdrożenie?Rozmieszczanie stron Jekyll na Github

Mam zamiar używać niestandardowej domeny. Mój przepływ pracy będzie działał w gałęzi głównej, może w niektórych gałęziach funkcji, a następnie wepchnie (scalę) skompilowany wynik do gałęzi stron gh. Czy to brzmi poprawnie?

Mam trudny czas wymyślić go za pośrednictwem dokumentacji, doceniam każdą pomoc, dziękuję!

Odpowiedz

17

Twój przepływ pracy nie brzmi poprawnie w oparciu o szczegóły w pytaniu.

Jeśli popchnąłeś swoją stronę opartą na Jekyllu do repozytorium username.github.io, to nie potrzebujesz gałęzi gh-pages. Oddział gh-pages jest wymagany tylko w przypadku repozytoriów, w których chcesz mieć kod i witrynę w tym samym repozytorium. Strony GitHub zajmą się uruchomieniem Jekyll dla Ciebie i serwowaniem skompilowanej strony w obu przypadkach.

GitHub Pages uruchamia Jekyll w bardzo specyficzny sposób, aby zachować jego bezpieczeństwo. Jeśli używasz niestandardowych wtyczek w swojej witrynie Jekyll, będziesz musiał przechowywać skompilowaną stronę (wspomniany katalog _site) w gałęzi głównej i źródło w innej gałęzi. Podsumowując, Twój przepływ pracy powinien działać w lokalnym repozytorium - w gałęzi master lub oddziałach funkcji (w razie potrzeby łącząc gałęzie funkcji z lokalną gałęzią master) - i kiedy jesteś gotowy do opublikowania, popchnij swoje lokalne repozytorium do gałęzi master na GitHub.

3

To, co chcesz zrobić, jest bardzo podobne do działania Octopress. Pozwól mi wyjaśnić, jak możesz zrobić coś takiego.

Chcesz rozmieścić dane, które są obecne w _site w oddziale gh-pages. Tak więc twoim pierwszym krokiem będzie uczynienie domyślnej gałęzi twojego repozytorium username.github.com stronami gh, a nie master lub source (w zasadzie to, co chcesz, żeby było). Teraz musisz wykonać zadania do zapisywania w swoim Rakefile, które skopiują zawartość _site do oddziału gh-pages. Gdy to zrobisz, możesz zautomatyzować procedurę push lub zrobić to ręcznie. W ten sposób GitHub nie zbuduje twojej strony, gdy będziesz push swoją domyślną gałęzią, zamiast tego po prostu serwer stron statycznych, które są obecne w _site.

Jeśli chcesz zrozumieć, jak działają skrypty, powinieneś rzucić okiem na obecny numer Rakefile w Octopress. Ma dwa zadania o nazwach: generate i deploy. Po uruchomieniu rake generate, uruchomi on jekyll --no-auto z parametrami umieszczania kodu w katalogu o nazwie _deploy, a po uruchomieniu rake deploy kopiuje zawartość _deploy do oddziału gh-pages i dokonuje zatwierdzenia. Osobiście bardzo lubię tę procedurę, ale nie wdrożyłem jej w mojej witrynie Jekyll jako takiej.

3

Wypróbuj mój klejnot jgd.Wystarczy go zainstalować i uruchomić:

gem install jgd 
jgd 

Gotowe! Twoja witryna została zbudowana i wdrożona pod adresem gh-pages. Również jgd idealnie integruje się z travis-ci lub jakimkolwiek innym serwerem CI.

Ten post wyjaśnia mechanizm w szczegóły: http://www.yegor256.com/2014/06/24/jekyll-github-deploy.html

+0

pojęcia o [to] (http://stackoverflow.com/q/34532476/2404470) – xameeramir

1

nie chcesz wprowadzać żadnych zmian w plikach w folderze _site. _site to Jekyll zapisuje statyczne strony html, które generuje. Zostaną one automatycznie nadpisane następnym razem, gdy serwer Jekyll zregeneruje stronę. Na przykład, jeśli utworzysz nowy wpis na blogu, serwer zobaczy nowy plik (lub zaktualizowany plik), a następnie serwer ponownie wygeneruje statyczne strony z nową zawartością w nich. W ten sposób Twój nowy wpis na blogu znajduje się u góry strony.

Uważa się za najlepszą praktykę dodawanie _site do pliku .gitignore. Nie ma potrzeby przesyłania tego katalogu do repozytorium, ponieważ zostanie on nadpisany, gdy tylko trafią na serwery Githuba.

Myślę, że chcesz to zrobić, to zmienić gałąź, a następnie scalić ją w gałąź gh-pages.

1

Twój przepływ pracy powinien działać w gałęzi projektowania lub funkcji, a następnie naciskać TYLKO skompilowane pliki do gałęzi głównej, aby były obsługiwane przez strony Github.

Aby to zrobić:

  1. Start na development gałęzi ze wszystkimi zmianami gotowe do zabudowy i wykonane na żywo.
  2. Run w gałęzi rozwojowej: rm -rf _site (spowoduje to usunięcie starych plików zbudowany w folderze _site)
  3. Run git clone -b master 'git config remote.origin.url' _site (to utworzyć oddział główny dla budowanych plików)
  4. Run jekyll build (budować witryny)
  5. cd _site
  6. Jeśli masz domenę niestandardową, czy 7-8, w przeciwnym razie przejdź do kroku 9
  7. touch CNAME
  8. Dodaj domenę niestandardową do tego pliku CNAME
  9. git add. (Powinno być w master/_site oddziału teraz)
  10. git commit
  11. git Push

Teraz tylko Wbudowane pliki powinny być na master, pliki robocze będzie po development lub cecha branży !

Walczyłem z tym przez jakiś czas, więc zbudowali scenariusz, jeśli chcesz go używać: https://github.com/andimiya/deploy-jekyll-gh-pages