2016-12-09 2 views
2

J'ai le problème suivant où:
Comment gérer des actifs pour différentes saveurs du produit

  1. Je arômes de produits multiples Dans mon projet Android. {Say, Dev and Production}
  2. J'ai un CI en place, Jenkins pour construire mes projets et rendre les versions à différentes équipes.
  3. J'ai un fichier d'actif qui est spécifique à la saveur, mais qui dépend des données qui existent sur un serveur. Exemple un json pour une liste de sociétés.
  4. Cette liste est différente sur Dev vs Production.
  5. Puisqu'il s'agit d'un énorme json, nous l'incluons dans notre dossier d'actifs. Le téléchargement de ce json à l'exécution ne permettra pas à l'utilisateur d'utiliser l'application rapidement au moins la première fois.
  6. Actuellement, au moment de la compilation dans Jenkins, nous wget/télécharger ce json et les écrire dans notre dossier des actifs. Pour obtenir les derniers actifs pour l'environnement/la saveur du produit au moment de la compilation.
  7. Ce wget est écrit comme une commande shell dans mon Jenkins. Après un succès wget nous courons le gradle assembleDev, répétez l'étape 6, puis gradle assembleProduction

Maintenant, le problème réside dans le fait que je ne suis pas à l'aise avec cette wget à Jenkins pour 2 raisons.
1) L'actif spécifique à l'environnement/json n'est pas disponible sur les machines de développement pour leurs tests locaux, ils doivent donc être constamment informés.
2) Le code dans Jenkins n'est évidemment pas présent dans mon VCS/Git. Ce que je ne suis pas à l'aise avec.
Quelles pourraient être les solutions possibles?
PS: - Pour mettre les choses en perspective, j'ai 22 Saveurs de produits et 8 jsons tels.

Répondre

0

Dans notre configuration de production, nous analysons actuellement un document Google Sheets pour trouver des variables et les écrire dans notre fichier strings.xml. Donc, un scénario similaire. Nous faisons cela dans notre script de construction Gradle, qui appelle une classe Java, qui exécute ensuite la logique réseau, renvoie les données téléchargées à Gradle, qui l'écrit dans le fichier strings.xml correct.

Cela signifie que tout notre code est présent dans notre dépôt git et peut être manipulé comme tel. Je trouve que c'est assez élégant.

Note: Actuellement, nous ne faisons pas de distinction entre les arômes du produit, mais cela se fait facilement avec quelques lignes supplémentaires dans Gradle.

+0

Votre programme Java fait-il partie de votre projet Android ou est-il exécuté séparément? Pouvez-vous partager du code? – Ichthyocentaurs