hiroshi hatake
cosmo****@gmail*****
2014年 11月 25日 (火) 23:26:52 JST
畑ケです。 > GroongaのWindows向けのCIをどうするかの相談です。 > ... > > ですが、Groongaのみであれば、おそらく大丈夫だろうと思い挑戦してみました。ひとまずビルドが完走したので報告です。 > > Mroongaの時と同じくAppVeyorを使っています。 > > おぉ!AppVeyorというサービスを使えば、Windows環境でGroongaの > ビルドチェックをできるのですね!これはとても助かりますね! > > > 9回目の挑戦でビルドのみは完走しました! > > (パッケージングはmingw-w64環境で出来るのでいいかな、という感じです。) > > はい、パッケージのビルドは必要ないです。 > Visual C++でのビルドだとRroongaのビルドに使えないので使い勝 > 手がよくないんですよね。。。 > > > 以下が設定です。 > > .travis.ymlのような感じで書けば大丈夫そうです。癖は有りますが…。 > > https://github.com/cosmo0920/groonga/compare/appveyor > > version.shはCMakeLists.txtの中でどうにかしたいところです > ね。。。 > > diff --git a/CMakeLists.txt b/CMakeLists.txt > index b8fd4cb..c904fe0 100644 > --- a/CMakeLists.txt > +++ b/CMakeLists.txt > @@ -25,7 +25,7 @@ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/version.sh") > file(READ "${CMAKE_CURRENT_SOURCE_DIR}/version.sh" GRN_VERSION) > else() > if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/version.sh") > - if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") > + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git" AND EXISTS "/bin/sh") > execute_process(COMMAND > "${CMAKE_CURRENT_SOURCE_DIR}/version-gen.sh") > file(READ "${CMAKE_CURRENT_BINARY_DIR}/version.sh" GRN_VERSION) > else() > > とすればいけるかしら。 > そうですね、powershell環境になるのでversion.shがそのままでは作れないので読み飛ばすか、かなり突貫な感じですが、 https://github.com/cosmo0920/groonga/blob/c56d8946163e5c28736e8f959ea66816982e4ab6/version-gen.ps1 を使ってversion.shを作っちゃう事でも何とかなります。 (上のdiffはversion-gen.ps1を作ってversion.sh <http://version-gen.xn--ps1version-6c4igb49bm265a.sh>を無理矢理生成しています) > > > 以下そのジョブの結果です: > > https://ci.appveyor.com/project/cosmo0920/groonga/build/1.0.9 > > warningも見れていい感じですね。 > > > ただ、AppVeyorのビルドキューが捌けるのがかなり遅いので、Groongaのmasterにマージしちゃうのは少し悩ましい所です。。 > > 結果が見れるようになるまで時間差があるってことですよね? > それは別にいいと思います。それよりも、どのリビジョンでビルド > できなくなったかわかることのメリットが大きいと思います。 > > これ、Groonga本体で利用するにはどうしたらよいのでしょうか? > このブログがちょろっと触れていますが、 http://posaune.hatenablog.com/entry/2014/05/02/201403 AppVeyorにログインしたらプロジェクトを生成して、 appveyor.ymlをリポジトリのrootに置くか、 AppVeyorのWebUIで設定するかでCIの設定が出来ます。 また、プロジェクト直下に有るappveyor.ymlがWebUIの設定より優先されます。 なのでappveyor.ymlが置いてあればWebUIで設定する事は特にないと思います。 (個人的にはappveyor.ymlにしてしまうのがオススメです。appveyor.yml限定の機能も有るから、という事と、AppVeyorのCIの設定をバージョン管理出来るからです。) ひとまずAppVeyorで動くようにしてあるappveyorブランチをプルリクしてみましょうか? その方が最初から動く設定に出来ているはずだからです。どうでしょう?