#gitlab #jekyll #gitlab-pages
# #gitlab #джекилл #gitlab-pages
Вопрос:
У меня нет опыта создания веб-сайтов. Я следовал инструкциям на gitlab, чтобы создать пример сайта jekyll (включая удаление отношения fork и переименование URL-адреса в groupname). В gitlab файл .gitlab-ci.yml содержит:
pages:
stage: deploy
script:
- gem install jekyll
- jekyll build -d public/
- cp -r static/* public/
artifacts:
paths:
- public
only:
- pages
В «корневой» папке на gitlab есть index.html , каталоги (css, статические) и т.д. Вы можете видеть в файле gitlab-ci.yml, gitlab копирует содержимое статического каталога в корневую папку (общедоступную). Хотя при просмотре страницы моего проекта в статическом виде отображаются только файлы (а не копии).
В Linux я установил и запустил jekyll, но он отображается неправильно. Ошибки «не найдено» в командной строке указывают на все ссылочные пути в статическом каталоге (в котором есть подкаталоги для css, font-awesome, fonts, img и js).
Я не хочу связываться с локальными расположениями файлов / каталогов, потому что это может вызвать проблемы, когда я захочу развернуть изменения в gitlab. Как мне локально эмулировать (с помощью команды «bundle exec jekyll serve»), что делает gitlab (копирование статического в корневой каталог)? Или есть другой способ справиться / исправить это?
Редактировать: я также вижу сообщение «Файл конфигурации: нет» при выполнении команды serve. Хотя есть файл _config.yml, я думаю, ему может потребоваться некоторая настройка. И в другой теме gitlab / jekyll есть несколько инструкций по настройке. Мне нужно будет изучить это дальше.
Редактировать после решения:
Основываясь на предложении Росса, я обновил строку в файле .gitlab-ci.yml с «jekyll build -d public /» на «bundle exec jekyll build -d public». Для этого файла я вижу, что другие удалили строку «gem install jekyll», но она все еще у меня, и пока она работает. Хотя мне интересно, должен ли я изменить его на «bundle install», чтобы версии gitlab / local jekyll были одинаковыми. Команда bundle считывает файл Gem, в котором у меня указана версия jekyll. Я не уверен, скажет ли это gitlab использовать определенную версию jekyll или они просто используют свою версию независимо.
Затем локально в Linux я записываю компакт-диск в каталог сайта с помощью .файлы yml, которые я загрузил из gitlab. Затем запустил
mkdir public
bundle install
bundle exec jekyll build -d public/
cp -r static/* public/
cd public/
jekyll serve
Обслуживаемая страница больше не повреждена. Теперь он выглядит точно так же, как фактический gitlab.io страница.
Ответ №1:
Вам нужно будет выполнить те же команды, что и GitLab, чтобы получить тот же результат. Похоже, вы запускаете это:
bundle install
bundle exec jekyll serve
Вы настроили GitLab для запуска этого:
gem install jekyll
jekyll build -d public/
cp -r static/* public/
Вы могли бы установить тот же пункт назначения с -d
помощью и запустить эту cp
команду локально, чтобы получить аналогичный результат, но вам пришлось бы делать это каждый раз, когда jekyll создает.
Я бы посоветовал вам продолжать использовать команды bundle и настроить GitLab для выполнения того же. В настоящее время вы столкнетесь с проблемами управления версиями, поскольку GitLab будет устанавливать последнюю версию Jekyll для каждой сборки, а любые плагины в Gemfile игнорируются.
Jekyll копирует статические ресурсы по умолчанию, поэтому вы можете просто полагаться на это, а не справляться static/*
public
, вам нужно будет обновить пути. Вероятно, он уже копирует их, если вы не настроили его так, чтобы игнорировать static
папку с этой exclude
опцией. Трудно понять, не видя исходных файлов.
Запустите jekyll
из той же папки, _config.yml
что и, если вы не переопределяете параметры source
config
командной строки или, чтобы избежать сообщения «Файл конфигурации: нет».
Комментарии:
1. Я обновил свой файл .gitlab-ci.yml. Теперь в нем есть: gem install jekyll, bundle exec jekyll build -d public / , cp -r static / * public/ Как и раньше, я загрузил zip-файл из gitlab и извлек. Затем локальные команды: я записал cd в каталог сайта. На этот раз я создал каталог в каталоге сайта с именем public (mkdir public). Затем: bundle exec jekyll build -d public / На данный момент я подключился к public и попробовал «jekyll serve», но все та же ошибка, что и раньше. Итак, я скопировал статический / * в общедоступный, а затем сработал «jekyll serve». Спасибо за вашу помощь!