Pregunta

Tengo el siguiente entorno de construcción:

  • Ubuntu
  • Java 1.6.0_24
  • Apache Ant 1.8.2
  • Jenkins 1.427
  • Jetty 6.1.26

Puedo crear una versión APK (Zipaligned y firmada) desde la línea de comando (en el área del espacio de trabajo de Jenkins), ejecutando ant release y luego escribir en el almacén de claves pasa cuando se le solicite.

Sin embargo, utilizando el mismo comando de compilación de un trabajo de Jenkins, falla con lo siguiente:

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

En el paso objetivo de Ant Jenkins, he establecido las siguientes propiedades:

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

¿Qué haría que Jenkins no firme, por lo que ejecutar el mismo objetivo desde la línea de comando funciona bien?

He buscado en Google esto, y he encontrado que algunas personas están escribiendo sus propios guiones Bash para firmar sus APK, y ejecutarlos como objetivos de Shell después, pero parece una manera bastante sucia ... ¿alguna sugerencia?

Gracias

¿Fue útil?

Solución

Hemos configurado nuestro servidor Jenkins para firmar nuestros APK utilizando la misma técnica que describe aquí, y funciona para nosotros. Una diferencia es que pongo la ruta totalmente calificada al almacén de claves en lugar de confiar en una ruta relativa. Nunca estoy seguro de dónde son relativos. Si su almacén de claves está en el control de versiones, Jenkins proporciona una variable de entorno de raíz de espacio de trabajo que puede usar para señalarlo.

También valdría la pena probar esta compilación desde la línea de comando donde define todas esas propiedades con ant -Dkey.store=/some/key.store ... Directivas para asegurarse de que todos los valores que ha proporcionado sean correctos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top