2011年10月11日火曜日

githubにShipIt!! ただしPerlです

  • PerlのShipItの利用にについて
  • shipitというか、その他の作業でつまずいたのでメモ。 ShipItとは、ExtUtils::Manifestのラッパーで、テストやVCのタグ付けなどを一連で行うツール。とっても便利。 今回は、githubへのpushまでがgoal。
    • ShipIt関連のインストール
    • $ cpanm ShipIt
      $ cpanm Module::Install::ReadmePodFromPod
      $ cpanm Module::Install::ReadmeMarkdownFromPod
      $ cpanm Module::Install::ReadmeFromPod
      $ cpanm Module::Install::GithubMeta
      
    • 設定の変更
    • githubにpushするように設定。VCのcommit先をgithubのpush先
      • .shipit
      • $ vi .shipit
        
        #steps = FindVersion, ChangeVersion, CheckChangeLog, DistTest, Commit, Tag, MakeDist, UploadCPAN
        steps = FindVersion, ChangeVersion, CheckChangeLog, DistTest, Commit, Tag, MakeDist
        git.tagpattern = release-%v
        git.push_to = origin
        
      • MYMETA関連のエラーメッセージが出た場合
      • MYMETA.json MYMETA.ymlなどがなくてエラーになる場合がある。 MANIFEST.SKIPに追加してチェック対象から除外するとよい。 おそらくmake manifestした際に自動でMYMETAも追加されてしまうのだが、よく使い道が分かっていないので無視しておく。 MYMETA.ymlについて調べてみると
        MYMETA.yml is just like META.yml, in that it follows the CPAN Meta Spec, but whereas META.yml is generated by the distribution author at packaging time, MYMETA.yml is generated by the end user at configure time after any dynamic dependencies are known.
        となっていて、ユーザが依存関係を解消するときに使うみたいなので、MYMETA関連がMANIFESTに含まれてしまうことに問題があるのではないのかなと思う。module-setupしたタイミングで空のファイルが作成されていてもいいのかもしれないと思った。と思ったらいつの間にかできていた。どのタイミングで作成されたのだろう。
        $ vi .shipit
        ^MYMETA\.
        
    • MANIFEST を作り直す
    • MANIFEST にないよって言われたときには、以下を実行すると更新される。
      $ rm MANIFEST
      $ make manifest
      そもそもmakeが何をしているのかなどについては、lestrratさんの記事を参考に。意外にこの辺のblogとか少ない気がするけど、できる人にとっては難しくないってことですね。 参考
  • CPAN登録方法
  • ということで、ついでにCPANのアカウントも申請してみました。 時間がかかるというエントリを見たので先に申請してみたのですが、意外にすぐに数時間でアカウントが発行されました。詳細は以下を参考に。こっちはたぶん難しくないです。 .shipitのUploadCPANのコメントアウトを外して、AppConfig::Stdを入れて.pauseを入れるといいのかな。まだやっていないのでわかりません。 docとtestをもう少し充実させてuploadしたいなって思います。