GeekFactory

int128.hatenablog.com

Bintray PGP Signingを試す

BintrayではJCenterからMaven Centralにパッケージを同期する機能がありますが、これを使うにはあらかじめパッケージのファイル(JAR, POM)にPGP署名を付与しておく必要があります。

BintrayではアップロードしたパッケージにPGP署名を付与する仕組みがあるようです。 そのためには下記を設定すればよいとドキュメントに記載されています。

  1. アカウント設定でPGP鍵を登録する。
  2. リポジトリ設定で Sign this repository's files with key from: user にチェックを入れる。

2014-09-24追記: Bintrayに新バージョンをアップロードする機会があったので気づいたのですが、アップロードと同時に自動的にPGP署名が付与されるようです。下記のセクションは誤りでしたので訂正します。もしかしたらPGP鍵の設定後にしばらく(数日!?)経たないと有効にならないのかもしれません。

てっきりアップロードと同時に自動的に署名が付与されると思っていたのですが、いくら設定を見直してもうまくいきませんでした。どうやらREST APIを叩く必要があるようです。REST APIのドキュメントを参考に、下記を実行したら署名ファイルが生成されました。

% curl -X POST --basic --user int128 https://api.bintray.com/gpg/int128/maven/org.hidetake:gradle-ssh-plugin/versions/0.3.12
Enter host password for user 'int128':
{"message":"success"}

gradle-bintray-pluginではGPG Signing APIをサポートしていないので、curlを実行するか、自力でGroovyコードを書く必要があります。

PGP秘密鍵をBintrayに登録するのは気持ち悪い*1し、gradle-bintray-pluginのサポートも微妙なので、ローカルで署名してからアップロードする方法がいいと思います。今のところmaven-publishプラグインsigningプラグインを組み合わせて使うのが非常に面倒なので、当面はmavenプラグインを使うしかないんでしょうかね。

*1:Bintrayを信頼するかどうかに依存する