2008年10月26日日曜日

gitのある生活

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
運用上、rpmでpackageしてすべてyum化するので、gitで管理するブツもyum化しないといけない。一人で開発運用をやっていると、妙な環境を作って失敗して原因追及に時間を割きたくないのだ。となるとcleanにpackageを作る必要性に駆られる。


#!/bin/sh
git-archive --format=tar --prefix=gnubg-backgammonbase-edition-0.2/ -v HEAD | gzip > gnubg-backgammonbase-edition-0.2.tar.gz
rpmbuild -ta gnubg-backgammonbase-edition-0.2.tar.gz &> log

tar ballを作る機能はgitにあり(git-archive)、それをrpmbuildに渡しさえすればいい。


releaseのtagを打ったらそれ自動的に反映したversion stringを持ってほしいのだが。pythonのsetup.py bdist_rpmはどうやっているのだろう?とくに、subersionのrevisionを拾ってくる機能はありがたい。

gitではどうしたらよいのだろう。思いつくアイディアをつれづれなるままに書いてみる。

  1. version postfixを用意してあげる。

    • gitがもつsha1をつかう→×。どれだか特定はできるが、順番がわからない。

    • 日時を使う→×。古いものをcheckoutしてあとからpackageするかもしれない。

    • incrementalなtagを用意してをつかう。→?
      どうやってtagの生成を自動化するのか?



  2. version postfixをつける。

    • dirやtar ballのfile名:前出のscriptに変数を導入すればOK

    • spec file。こまった。spec fileを書き換える必要が出てくる。version 番号が埋め込まれているので。ひとつ方法としては、Makefile.amよろしく、動的に生成し、何らかの方法によってtar ballに挿入するか、rpmbuildにspec fileを別途渡すかするというもの。





とまあ、運用を視野に入れて物を作るのは面倒なのですよ。特にすべてyum一発インストールを維持しようと思うと。
もちろん、yumでインストールできるようにしてもpackageが正しくできているか検証する必要があるわけで、最近は仮想環境(VM fusion)をつかって検証しています。こいつはメンテ時の代用サーバもかねています。

あ~~あ。調べ物が多いなぁ。google先生があるだけマシなのだが。

2 件のコメント:

nori さんのコメント...

tar -vu gnubg-backgammonbase-edition-0.2/gnubg.spec -f gnubg-backgammonbase-edition-0.2.tar

とかして、gzipするまえにtarの中身のfileを置き換えてやればいい。permissionの問題が残るが。

git-archiveする前にspec fileを生成してdirを堀り、そこに入れておけばいい。

make fileを書くのかなぁ~。

nori さんのコメント...

tagまわりは明日やろう。