# #git #gitlab #git-submodules #hexo
Вопрос:
Я тестирую развертывание сайта Hexo на страницах GitLab. В настоящее время я использую тему, которую кто-то опубликовал на GitHub, и, таким образом, у меня есть подмодуль Git в themes
папке моего проекта Hexo, так что файл верхнего уровня .gitmodules
выглядит следующим образом:
[submodule "themes/Hacker"]
path = themes/Hacker
url = https://github.com/CodeDaraW/Hacker.git
Я использую рекомендуемый файл YAML Hexo doc (обновлен для текущего узла) для настроек CI, и задание CI, похоже, проходит гладко, за исключением того, что оно случайным образом решает пропустить настройку подмодулей Git:
Getting source from Git repository 00:01
$ eval "$CI_PRE_CLONE_SCRIPT"
Fetching changes with git depth set to 50...
Initialized empty Git repository in /builds/jjeffrey/jjeffrey.gitlab.io/.git/
Created fresh repository.
Checking out 76f8757a as master...
Skipping Git submodules setup
Restoring cache 00:01
Checking cache for default...
FATAL: file does not exist
Это мешает сайту правильно генерировать файлы HTML/CSS, поскольку тема отсутствует:
$ hexo generate
INFO Validating config
INFO Start processing
INFO Files loaded in 100 ms
WARN No layout: 1970/01/01/hello-world/index.html
WARN No layout: 1970/01/01/test_new/index.html
WARN No layout: archives/index.html
WARN No layout: archives/1970/index.html
WARN No layout: archives/1970/01/index.html
WARN No layout: index.html
INFO Generated: archives/index.html
INFO Generated: archives/1970/index.html
INFO Generated: archives/1970/01/index.html
INFO Generated: index.html
INFO Generated: 1970/01/01/hello-world/index.html
INFO Generated: 1970/01/01/test_new/index.html
INFO 6 files generated in 13 ms
Как мне убедиться, что GitLab действительно правильно загружает подмодуль Git, чтобы моя тема загружалась?
Комментарии:
1. Ты пробовал загуглить свой вопрос?
2. Я так и сделал, и я видел ссылку, о которой вы упомянули, но, возможно, я прочитал ее слишком быстро.
3. Там недостаточно документации. Там слишком много документации.
Ответ №1:
Из документации gitlab С использованием подмодулей Git с GitLab CI/CD:
Используйте подмодули Git в заданиях CI/CD
Чтобы подмодули правильно работали в заданиях CI/CD:
- Убедитесь, что вы используете относительные URL-адреса для подмодулей, расположенных на одном сервере GitLab.
- Вы можете установить переменную GIT_SUBMODULE_STRATEGY в обычное или рекурсивное значение, чтобы указать исполнителю, чтобы он извлек ваши подмодули перед заданием:
variables: GIT_SUBMODULE_STRATEGY: recursive
Также смотрите https://docs.gitlab.com/ee/ci/runners/configure_runners.html#git-submodule-strategy .
Ответ №2:
Я решил свою проблему, добавив строку .gitlab-ci.yml
для обновления подмодуля Git, прежде чем продолжить работу с остальной частью сценария.
image: node:14.17.1
cache:
paths:
- node_modules/
before_script:
- git submodule update --init
- npm install hexo-cli -g
- npm install
pages:
script:
- hexo generate
artifacts:
paths:
- public
only:
- master