2017-07-04 5 views
3

J'essaye de configurer la construction d'intégration continue pour mon application Android. J'utilise la plate-forme CircleCi pour cela. Maintenant, je stocke mon fichier Keystore.jks applications localement, mais CircleCi a besoin de signer mon application. Comment puis-je y parvenir sans stocker le fichier sur mon dépôt git? Ou peut-être que je ne devrais pas m'inquiéter à ce sujet alors que le dépôt est privé?Où stocker le fichier Android KeyStore pour CirlceCi build?

Mes Gradle configs signature:

signingConfigs { 
    if (System.getenv("CIRCLECI")) { 
     release { 
      keyAlias '****' 
      keyPassword '****' 
      storeFile file(System.getenv("******")) 
      storePassword '****' 
     } 
    }else{ 
     release { 
      ... 
     } 
    } 
} 

Mon circle.yml:

general: 
    artifacts: 
     - /home/ubuntu/my-app/app/build/outputs/apk/ 
machine: 
    environment: 
    ANDROID_HOME: /usr/local/android-sdk-linux 
dependencies: 
    override: 
    - chmod +x gradlew 
test: 
    override: 
    - ./gradlew assemble 

J'ai essayé de sauvegarder le fichier sur keystore CircleCi comme variable d'environnement, mais il ne fonctionne pas, ma génération échoue avec l'exception:

> Execution failed for task ':app:validateSigningDemoRelease'. 
> > Keystore file /home/ubuntu/my-app/app/ HERE_IS_THE_KEYSTORE not found for signing config 'release'. 

Les versions non signées et de débogage se terminent avec succès.

Je suis également ouvert à utiliser n'importe quelle plateforme ci si vous suggérez autre chose.

Merci d'avance pour tous vos conseils!

+0

Quelle est votre solution définitive pour votre problème? – Dharmendra

Répondre

0

Pour moi, vous avez deux solutions:

  • Il est un dépôt privé et vous êtes le seul à l'utiliser, vous pouvez donc pousser votre clé.

  • Ma solution préférée serait de créer une autre clé que vous appelez circleCI (par exemple) et que vous appuyez. Personnellement, j'utilise cette solution

Mon build.gradle

signingConfigs { 
     Keys { 
      keyAlias 'mykey' 
      storeFile file('../private_key/upload_key.jks') 
      keyPassword '' 
      storePassword '' 
     } 

     Circleci { 
      keyAlias 'key' 
      storeFile file('../private_key/debug_key.jks') 
      keyPassword '' 
      storePassword '' 
     } 
    } 
buildTypes { 
     release { 
      shrinkResources true 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 
        'proguard-rules.pro' 
      signingConfig signingConfigs.Keys 
     } 
     debug { 
      signingConfig signingConfigs.Keys 
     } 
     circleci{ 
      signingConfig signingConfigs.Circleci 
     } 
    }