Подтвердить что ты не робот

Развертывание Jekyll на страницах Github

Я создал сайт локально с Jekyll и перенаправил его на новый мастер-репо (username.github.com), и сайт отлично работает. Мой вопрос: как мне перемещать только развертываемую часть, каталог _site, в ветвь gh-pages? Вернее, содержимое этого каталога, если это лучший способ развертывания?

Я планирую использовать собственный домен. Мой рабочий процесс будет работать в основной ветке, возможно, в некоторых ветвях функций, а затем сместить (слить) скомпилированный результат в ветвь gh-pages. Правильно ли это звучит?

Мне сложно разобраться с документацией, по достоинству оцените любую помощь, спасибо!

4b9b3361

Ответ 1

Ваш рабочий процесс не звучит корректно, основываясь на деталях вашего вопроса.

Если вы переместили ваш сайт на Jekyll в репозиторий username.github.io, вам не понадобится ветвь gh-pages. Разветвление gh-pages требуется только для репозиториев, где вы хотите иметь код и веб-сайт в том же хранилище. GitHub Pages позаботится о том, чтобы запустить Jekyll для вас и обслуживать скомпилированный сайт в обоих случаях.

Страницы GitHub действительно запускают Jekyll очень определенным образом, чтобы обеспечить безопасность. Если вы используете пользовательские плагины с вашим сайтом Jekyll, вам нужно будет сохранить ваш скомпилированный сайт (упомянутый вами каталог _site) на главной ветке и источник в другой ветке.

Подводя итог, ваш рабочий процесс должен работать в вашем локальном репозитории - либо в ветвях веток master, либо в ветких (слияние ветвей функций в локальную ветвь master при необходимости) - и когда вы будете готовы опубликовать, нажмите локальный репозиторий на ветку master на GitHub.

Ответ 2

То, что вы хотите сделать, очень похоже на то, как работает Octopress. Позвольте мне объяснить вам, как вы можете сделать что-то подобное.

Вы хотите развернуть данные, присутствующие в _site, в ветку gh-pages. Итак, первым шагом будет сделать ветку по умолчанию для вашего репозитория username.github.com как gh-страницы, а не master или source (в основном, что бы вы ни хотели). Теперь вам нужно записать задачи в Rakefile, которые копируют содержимое _site в ветвь gh-pages. Как только это будет сделано, вы можете автоматизировать процедуру push или сделать это вручную. Таким образом, GitHub не будет создавать ваш веб-сайт, когда вы push своей ветвью по умолчанию, вместо этого он будет просто загружать статические страницы, присутствующие в _site.

Если вы хотите понять, как работают скрипты, вы должны взглянуть на Rakefile, присутствующий в Octopress. Он имеет эти две задачи, называемые generate и deploy. Когда вы запустите rake generate, он будет запускать jekyll --no-auto с параметрами для ввода кода в каталог с именем _deploy, а при запуске rake deploy он копирует содержимое _deploy в ветвь gh-pages и делает commit, Лично мне эта процедура очень нравится, но я не реализовал ее на своем сайте Jekyll как таковой.

Ответ 3

Попробуйте jgd gem. Все, что вам нужно сделать, это установить его и запустить:

gem install jgd
jgd

Готово! Ваш сайт построен и развернут в gh-pages. Также jgd отлично интегрируется с travis-ci или любым другим сервером CI.

В этом сообщении подробно описывается механизм: http://www.yegor256.com/2014/06/24/jekyll-github-deploy.html

Ответ 4

Вы не хотите вносить изменения в файлы в папке _site. _site - это Jekyll сохраняет статические html-страницы, которые он создает. Они будут автоматически перезаписаны в следующий раз, когда сервер Jekyll регенерирует сайт. Например, если вы создаете новое сообщение в блоге, сервер видит новый файл (или обновленный файл), а затем сервер восстанавливает статические страницы с новым содержимым в них. Вот как ваше новое сообщение в блоге находится в верхней части страницы.

Рекомендуется использовать _site для вашего файла .gitignore. Нет необходимости перетаскивать этот каталог в ваше репо, поскольку он будет перезаписан, как только они попадут на серверы github.

Я думаю, что вы хотите сделать checkout новую ветвь, внести изменения, а затем объединить ее в ветвь gh-pages.

Ответ 5

Ваш рабочий процесс должен работать в ветке разработки или функции, а затем нажимать ТОЛЬКО встроенные файлы на основную ветку, чтобы они обслуживались страницами Github.

Для этого:

  • Начните работу с веткой development со всеми вашими изменениями, готовыми к созданию и вживую.
  • Запустите в своей ветке разработки: rm -rf _site (это приведет к удалению старых встроенных файлов в папку _site)
  • Запустите git clone -b master 'git config remote.origin.url' _site (это создаст основную ветку для ваших встроенных файлов).
  • Запустите jekyll build (создайте свой сайт)
  • cd _site
  • Если у вас есть собственный домен, сделайте 7-8, в противном случае перейдите к шагу 9
  • touch CNAME
  • Добавьте свой собственный домен в этот файл CNAME
  • git добавить. (теперь вы должны находиться в ветке master/_site)
  • git commit
  • git нажмите

Теперь только ваши встроенные файлы должны быть на master, ваши рабочие файлы будут находиться в вашей ветке development или функции!

Я боролся с этим какое-то время, поэтому построил script, если вы хотите его использовать: https://github.com/andimiya/deploy-jekyll-gh-pages