Остановить GitLab от пропуска подмодулей Git во время работы CI?

# #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:

  1. Убедитесь, что вы используете относительные URL-адреса для подмодулей, расположенных на одном сервере GitLab.
  2. Вы можете установить переменную 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