hgweb.cgiとsphinxによる自動ビルド環境

Posted on 2012/06/20(Wed) 22:30 in technical

  • バージョン管理にmercurial
  • ドキュメント作成にsphinx
  • 手元でrst書いて、HTTPSでhgweb.cgiにhg pushして、裏でsphinxが自動的にビルドして、Webが更新される。

そういうことをしたいなぁ、という話。

OSはUbuntu 10.04 server amd64を使ったsphinx環境の導入については、ダイジェスト。

Ubuntu 10.04のリポジトリにあるsphinxは古いので、aptで入れるのはpipのみ。

# apt-get install pip
# pip install sphinx
# pip install sphinxcontrib-blockdiag
# pip install sphinxcontrib-nwdiag
# pip install sphinxjp.themecore
# pip install rst2pdf
# pip install sphinxjp.themes.dotted

場合によっては、apt-get purge docutilのようなことをしなければならないかもしれない。

正直virtualenvを使うべきだったと反省している。

hgweb.cgiの設定はこの辺りに書いたので、別途参照。

https://www.ainoniwa.net/doku/programming/python/mercurial/web/start

で、hgweb.cgiが動いてるサーバで、

# cd /var/tmp
# sudo -u www-data hg clone /var/www/mercurial/doc
# vi /var/www/mercurial/doc/.hg/hgrc
[hooks]
changegroup.build = /var/tmp/auto_build.sh
# vi /var/tmp/auto_build.sh
hg --repository /var/tmp/doc pull --update /var/www/mercurial/doc && sphinx-build -b html -d /var/tmp/doc/build/doctrees /var/tmp/doc/source /var/www/doc

のように書いてやる。

手元のrstをエディタで編集して、

# hg --repository /home/user/doc push https://www.example.net/mercurial/doc

すると、裏でpullとsphinx-buildが走って http://www.example.net/doc (があると仮定)が更新される。

そういうわけで、dokuwikiの内容をsphinxに移動中。

https://www.ainoniwa.net/pdoc/

変換スクリプトなんて無いから暇な時に書いてるんだけど、既に心が折れそうだよ!