Развертывание Jekyll на страницах Github
Я создал сайт локально с Jekyll и перенаправил его на новый мастер-репо (username.github.com), и сайт отлично работает. Мой вопрос: как мне перемещать только развертываемую часть, каталог _site, в ветвь gh-pages? Вернее, содержимое этого каталога, если это лучший способ развертывания?
Я планирую использовать собственный домен. Мой рабочий процесс будет работать в основной ветке, возможно, в некоторых ветвях функций, а затем сместить (слить) скомпилированный результат в ветвь gh-pages. Правильно ли это звучит?
Мне сложно разобраться с документацией, по достоинству оцените любую помощь, спасибо!
Ответы
Ответ 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