4

私は次のビルド環境を持っています:

  • Ubuntu
  • Java 1.6.0_24
  • Apache ant 1.8.2
  • ジェンキンス1.427
  • 桟橋6.1.26

コマンドライン(jenkinsワークスペース領域)からリリースAPK(zipalignedおよびsigned)を作成するには、実行して、プロンプトが表示されたらant releaseキーストアパスを入力します。

ただし、Jenkinsジョブから同じビルドコマンドを使用すると、次のように失敗します。

release:
     [echo] Signing final apk...
  [signjar] Signing JAR: /home/james/.jenkins/workspace/android-sam/androidsam/bin/AndroidSam-unsigned.apk to /home/james/.jenkins/workspace/android-sam/androidsam/bin/AndroidSam-unaligned.apk as mykeystore 
  [signjar] jarsigner: Certificate chain not found for: mykeystore .  mykeystore  must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.

BUILD FAILED
/home/james/tools/android-sdk-linux_x86/tools/ant/main_rules.xml:641: jarsigner returned: 1

jenkins antターゲットステップでは、次のプロパティを設定しました。

key.store=my-release-key.keystore
key.alias=mykeystore 
key.store.password=<mypass>
key.alias.password=<mypass>
sdk.dir=/home/james/tools/android-sdk-linux_x86

jenkinsが署名に失敗し、コマンドラインから同じターゲットを実行するとうまくいく原因は何ですか?

私はこれをグーグルで検索し、APKに署名するために独自のbashスクリプトを作成し、後でそれらをシェルターゲットとして実行している人がいることを発見しましたが、それはかなり汚い方法のようです...何か提案はありますか?

ありがとう

4

1 に答える 1

3

ここで概説したのと同じ手法を使用してAPKに署名するようにJenkinsサーバーをセットアップしました。1つの違いは、相対パスに依存するのではなく、完全修飾パスをキーストアに配置することです。彼らがどこから来たのかはわかりません。キーストアがバージョン管理されている場合、Jenkinsは、キーストアをポイントするために使用できるワークスペースルート環境変数を提供します。

また、コマンドラインからこのビルドをテストして、ant -Dkey.store=/some/key.store ...ディレクティブを使用してこれらすべてのプロパティを定義し、指定したすべての値が正しいことを確認することも価値があります。

于 2011-11-29T21:55:12.087 に答える