Команда sphinx-build не найдена в gitlab ci pipe / python 3 alpine image - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу указать задание GitLab, которое создает документацию sphinx html.

Я использую Python 3 высокогорное изображение (не могу точно указать, какое именно).

этап сборки в моем .gitlab-ci.yml выглядит следующим образом:

pages:
  stage: build
  tags: 
  - buildtag
  script:
  - pip install -U sphinx
  - sphinx-build -b html docs/ public/
  only:
  - master

однако конвейер не работает: sphinx-build: command not found. (та же ошибка для make html)

Согласно В этом уроке мой .gitlab-ci.yml должен быть более или менее правильным.

Что я делаю не так? Эта проблема связана с альпийским изображением, которое я использую?

Ответы [ 3 ]

1 голос
/ 14 апреля 2020

Как правильно заметил @Yasen, путь к sphinx-build не содержался в $PATH. Однако добавление command перед sphinx-build не решило проблему для меня.

В любом случае, я нашел решение в журналах бегуна: вывод pip install -U sphinx выдал следующее предупреждение:

WARNING: The scripts sphinx-apidoc, sphinx-autogen, sphinx-build and sphinx-quickstart are installed in 'some/path' which is not on PATH.

, поэтому я добавил export PATH="some/path" к скрипт-шаг в .gitlab-ci.yml:

script:
  - pip install -U sphinx
  - export PATH="some/path"
  - sphinx-build -b html docs/ public/
1 голос
/ 09 апреля 2020

Скорее всего, причина в том, что $PATH не содержит путь к build-sphynx

TL; DR пытается использовать command

Попробуйте это:

pages:
  stage: build
  tags: 
  - buildtag
  script:
  - pip install -U sphinx
  - command sphinx-build -b html docs/ public/
  only:
  - master

Пояснение

GitLab бегуны бегут по-другому

Поскольку GitLab CI использует runners, профиль оболочки runner может отличаться от обычно used.

Таким образом, ваш бегун может быть настроен без объявления $PATH в каталог, содержащий sphinx-build

Zsh / Bash порядок загрузки файлов запуска (.bashr c, .zshrc et c.)

См. это объяснение :

Проблема заключается в том, что Bash исходники из другого файла в зависимости от того, какого типа Оболочка, в которой он находится. Для «интерактивной оболочки без входа в систему» ​​он читает .bashr c, но для «интерактивной оболочки для входа в систему» ​​он читает из first .bash_profile, .bash_login и .profile (только). Нет разумной причины, почему это должно быть так; это просто история.

Что означает command?

Поскольку мы не знаем путь, где установлен sphinx-build, вы можете использовать такие команды, как: which, type, et c.

Согласно этому великому ответу ( shell - Почему бы не использовать «который»? Что использовать тогда? - Unix & Linux Обмен стека , автор рекомендует использовать command <name> или $(command -v <name>)

0 голосов
/ 10 апреля 2020

Команда pip install -U sphinx выполнена успешно? (Вы должны быть в состоянии узнать это из журнала заданий CI.)

Если это так, вам может потребоваться указать полный путь к sphinx-build, как сказал Ясен.

Если это так не удастся устранить неполадку при установке Sphinx.

...