Sphinx-документация на GitHub Pages

от автора

GitHub Pages — это такая классная шизофреническая штука, которая может а)показывать созданную при помощи встроенного редактора страничку, б)генерировать Jekyll-блог и в)отображать html-файлы на произвольном домене.
В последнем образе она нас и интересует для размещения документации, написанной с использованием Sphinx.

Технически, в любом случае создаётся ветка gh-pages (за исключением), из которой отображается контент.
Итак, проект — это один репозиторий, документация к нему — другой, нет смысла смешивать их.
В master репозитория документации у нас хранятся исходники в формате ReStructuredText и конфигурационные файлы вместе с историей изменений. В gh-pages мало того, что история лишена смысла, так ещё и логически эта ветка существует параллельно master. Из таких предпосылок я исходил, создавая следующий скрипт.

#!/bin/sh shopt -s extglob dotglob  CURR_DIR="$(pwd)" TMP_DIR="$CURR_DIR"-gh-pages  sh build.sh  rm -rf "$TMP_DIR" cp -r . "$TMP_DIR" cd "$TMP_DIR"  git branch -D gh-pages git checkout --orphan gh-pages rm -rf !(.git|.gitignore)  cp -r "$CURR_DIR"/_build/html/* . touch .nojekyll echo "droidparts.org" > CNAME  git add -A git commit -m "published" git push origin :gh-pages git push origin gh-pages  rm -rf "$TMP_DIR" 

(link)

Последовательность действий:

  1. Запускаем скрипт, собирающий документацию.
  2. Копируем репозиторий во временную папку, переходим в неё.
  3. Удаляем gh-pages, создаём её снова. Параметр --orphan отвечает за то, что ветка будет создана без родительского комита. Т.е. без привязки к master, что и требовалось. Также очищаем папку.
  4. Копируем сгенерированные на первом шаге файлы.
  5. Добавляем .nojekyll, чтобы GitHub Pages не подпускал Jekyll к папкам с нижним подчёркиванием.
  6. Создаём файл CNAME с доменом, с которого всё будет отдаваться. Естественно, также нужно настроить DNS.
  7. Наконец, комитим, удаляем gh-pages с сервера, делаем push.

В качестве бонуса наблюдаем баг, когда GitHub сообщает о количестве комитов ahead & behind, а при попытке сравнить сообщает, что . Или так и должно быть?

ссылка на оригинал статьи http://habrahabr.ru/post/180213/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *