Jenkins(Hudson) で使っているプラグイン一覧

プラグイン一覧

使い始めて、3日ですが現在使っているインストール済みのプラグインです。

  • Green Ball
    • 青色がなじめなくて。
  • Git Plugin
  • Hudson Post build task
    • ジョブの失敗通知用に利用している。
  • Cobertura Plugin
    • python-coverage用に利用中。
  • Monitoring
    • 入れてみた。
  • Python Plugin
    • 使いどころがいまいちわからず。

TODO

ジョブが失敗したときに、シェルスクリプトを動かしたいけど
どのプラグインがいいのか分からないので調査する。

ジョブ失敗通知の決定版は、まだ調査中。

CentOS で、OpenJDK を利用する。

Jenkins(Hudson)用に、Java をインストールする必要があるのですが、
せっかくなので、OpenJDKをインストールしました。

通常では、 yum からアクセスできないですが、
Fedora Project で作成している Extra Packages for Enterprise Linux (EPEL) を利用することで、インストールできるようになります。

openjdk 1.6.0 のインストール手順

 # rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/<arch>/epel-release-<最新バージョン>.noarch.rpm
 # yum install java-1.6.0-openjdk

epel-release パッケージは、変更されるため事前にファイル名を確認してください。

Hudson(Jenkins) はじめました。

はじめに

Buildbotを常用していたのですが、Erlangと相性の悪い部分があったので、Jenkinsに乗り換えました。
ソースコードも読みつつ、パッチを当てようかとも思ったのですが、
アップデートのたびに個別パッチは、結局のところ、大変になるだけなのでCIツールを変更しました。

Buildbot の機能に依存している部分が少なかったため、ツール変更しても問題ない感じです。
せっかくなので、いろいろとまとめていきたいと思います。

インストール

war ファイルをダウンロードして、好きなディレクトリに置くだけです。

テスト起動

 $ cd /home/kuma8
 $ wget http://hudson-ci.org/downloads/war/latest/hudson.war
 $ java -jar hudson.war

適当に GUI からジョブを作ってみましょう。
これだけで、CIを体験できます。

サービス化

Linux/Mac であれば、 nohup と & を使えば、デーモン化できます。
公式でもこの手順が紹介されていたので正しいようです。

バックアップ

デフォルトでは、 $HOME/.hudson に設定ファイルなど置かれます。
環境変数の HUDSON_HOME に任意のパスを設定すると変更できます。

バックアップは、 .hudson を丸ごと圧縮します。

 $ cd ~
 $ tar zcf hudson.tar.gz ~/.hudson

TODO

別のサービス化方法を試す。 (jetty)
Python & nose 連携を試す。

enjoy jenkins.

platex経由でPDFを生成する。その2

前回の内容では、Sphinx プロジェクト内に画像ファイルが無いとエラーになってしまいました。
その現象は、すでに本家のレポートとして報告されています。

そのパッチを参考に以下のようにすると、画像ファイルが無い場合にもエラーとならずPDFが作成できます。

all-pdf-ja: $(wildcard *.tex)
  for f in *.pdf *.png *.gif *.jpg *.jpeg; do ebb $$f; done

パッチをすべて当てない理由は、

-mendex -U -f -d '$(basename $<).dic' -s python.ist '$(basename $<).idx'

の部分が、確認した環境でうまく動作しなかったからです。

追記

単に、パッチ前の状態でも動いていなかったですが、Makeのエラー無視が効いていただけでした。

enjoy sphinx!

platex経由でPDFを生成する。

はじめに

Sphinx 1.0.6 から platex経由で日本語を含むPDFが出力できるようになりました。
以前は、LaTeX経由でのPDF作成のように、いろいろと手を入れる必要がありました。

まだ利用方法のドキュメントが無いため紹介します。

platex経由でのPDF作成

まず、platexが利用できる環境を用意します。
TexLive2010 で利用できることを確認できているので、TexLive2010以降をおすすめします。

次に、サンプルのプロジェクトを作成します。細かい手順は、http://sphinx-users.jp/gettingstarted/index.html Sphinxをはじめようを見るとわかりやすいです。

ここまでで、サンプルのプロジェクトができあがっているので、platex経由でPDFが出力できるようにします。

まず、 conf.py の設定を変更します。 次のように、languageの値を 'ja' に変更します。

# The language for content autogenerated by Sphinx. Refer to documentation                                              
# for a list of supported languages.
language = 'ja'

この設定で、日本語対応のコードが含まれたソースファイルが生成されます。

次に内容を、Makefileの最後に追加します。

platexpdf:
  $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
  @echo "Running pLaTeX files through platex..."
  make -C $(BUILDDIR)/latex all-pdf-ja
  @echo "platex finished; the PDF files are in $(BUILDDIR)/latex."

この変更で、platex経由でPDFを生成できるようになります。
実際に、PDFを作成するには、

 $ make platexpdf

とします。

enjoy sphinx!

くれるというのなら。

MacBook Air 11インチ欲しい!

と書き込むだけで、話題のMacBook Air 11インチが当たるプレゼントキャンペーンが実施されています。

ブログは放置してたので、今年はアウトプットを増やしていきたいなと思ってます。

リポジトリを後から共有できるようにする。

はじめに

リポジトリを共有モードにするのを忘れていてトラブったので、解決した際の方法を紹介します。

今回は、 ssh経由でアクセスことが前提です。
http/https を利用する場合は別途手順がありますので、機会があれば後日紹介します。

解決方法

まず、 Git リポジトリをチームで共有する際には、 --shared オプションを付与し、リポジトリを初期化します。次に、チームのメンバーの umask を 002 もしくは 007 に変更します。
手順さえ間違えなければ、リポジトリの共有は簡単です。

--shared を忘れた場合はどうなるのかというと、正しく共有できる状態となっていないため、Permission denied が発生します。
この状態は、次の手順で解消できます。

$ cd /your/git/repository
$ git config core.sharedRepository group
$ chmod -R g+ws hooks
$ chmod -R g+ws info
$ chmod -R g+ws objects
$ chmod -R g+ws refs

一連の手順の説明をしていくと、

git config core.sharedRepository group

で、 config ファイルに、リポジトリの共有設定を追加しています。

chmod では、各ディレクトリのアクセス権を変更しています。
--shared 付きで初期化されたリポジトリは、ディレクトリにグループからの書き込みとスティッキービットが付与されています。

    • shared なし
$ git init --bare test.git
$ ls -l test.git
-rw-r--r--  1 kuma8  staff   23  1 15 22:42 HEAD
-rw-r--r--  1 kuma8  staff   66  1 15 22:42 config
-rw-r--r--  1 kuma8  staff   73  1 15 22:42 description
drwxr-xr-x  2 kuma8  staff  408  1 15 22:42 hooks
drwxr-xr-x  2 kuma8  staff  102  1 15 22:42 info
drwxr-xr-x  4 kuma8  staff  136  1 15 22:42 objects
drwxr-xr-x  4 kuma8  staff  136  1 15 22:42 refs
    • shared あり
$ git init --bare --shared
$ ls -l test.git
-rw-rw-r--  1 kuma8  staff   23  1 15 22:43 HEAD
-rw-rw-r--  1 kuma8  staff  126  1 15 22:43 config
-rw-rw-r--  1 kuma8  staff   73  1 15 22:43 description
drwxrwsr-x  2 kuma8  staff  408  1 15 22:43 hooks
drwxrwsr-x  2 kuma8  staff  102  1 15 22:43 info
drwxrwsr-x  4 kuma8  staff  136  1 15 22:43 objects
drwxrwsr-x  4 kuma8  staff  136  1 15 22:43 refs

chmod を利用して、--shared と同じ状態にしています。