executer un script shell avant la phase de build

Bonjour !


 


Je dispose d'un projet "template" que j'aimerai distribuer et personnaliser pour le compte de différentes entités.


 


Pour cela dans mon projet, je définis une target par entité qui précise le certificat et le provisioning profile adéquat pour signer au nom de cette entité.


En plus de ça je veux qu'au moment du build un script shell s'execute pour remplacer les images "génériques" du projet par les images aux couleurs de l'entité.


 


J'utilise actuellement Jenkins sur mon projet iOS et je précise que je ne suis pas familier avec l'integration continue.


 


J'ai essayé deux choses pour l'execution de mon script shell :


- le run script durant la build phase de la target


- la pre-action durant le build du scheme


 


 Avec Jenkins je récupère bien autant d'.ipa que de targets mais ces .ipa contiennent les ressources génériques et non pas celles de l'entité correspondante. Cependant, en retournant dans mon projet Xcode, je vois que mes images génériques ont été remplacées, signe que le script a bien été exécuté.


 


Il y a quelque chose qui m'échappe et j'aimerai savoir pourquoi mes .ipa n'embarquent pas les bonnes ressources ?


Aussi quelle est la méthode que vous utilisez ou utiliseriez pour réaliser ce genre de personnalisation d'application au moment du build ?


 


Merci !


Réponses

  • samirsamir Membre

    Bonjour,


     


    Je pense que ton erreur est dans le faite que tu as rajouté ce script dans Xcode mais tu as configuré Jenkins pour qu'il aille chercher une branche sur Github, non ? 


     


    Je pense que tu peux ajouter ton script dans la configuration de Jenkins avant de faire le build (normalement y a un truc du genre Pre-Build Actions).


  • J'utilise un dépôt git hébergé en local sur ma machine pour mes tests.


     


    J'ai fait comme tu me l'as suggéré, j'ai deplacé mes scripts shell dans la configuration de mon job Jenkins.


    Ces scripts sont bien exécutés car dans mon "commit history" je vois les commits correspondant au remplacement des images pourtant les .ipa générés contiennent toujours les images génériques...


     


    Pour simplifier la chose je travaille sur une seule et même branche, la master.


  • samirsamir Membre

    Normalement Jenkins vas faire un clone de ta branche, ensuite exécuter le script. Et si tu vérifier le contenu de ton worskpace à  la fin de ton build ? si les images  qui se trouvent dans le workspace ne sont pas les bonnes, c'est que ton script n'as pas marché.

  • Bonjour,


     


    Peux-tu vérifier que tu as bien effectué un push de tes modifications et pas seulement un commit en locale?


    En effet, si tu as seulement effectué un commit, les modifications ne sont peut être que prises en compte en locale ce qui peux expliquer le fait que tes modifications fonctionnent sur ton Mac mais pas sur ton serveur Jenkins.


     


     


  • J'ai finalement réussi à  faire fonctionner mon build.


     


    Comme Samir l'a fait remarquer, Jenkins clone le projet avant de builder.


    Et comme dans mon script shell j'utilisais des chemins absolus pour accéder à  mes ressources plutôt que des chemins relatifs, mon script modifiait bien les ressources mais sur un repository different que celui utilisé par Jenkins.


     


    En gros, j'avais deux repos en parallèle et non-synchronisés durant la phase de build.


     



Connectez-vous ou Inscrivez-vous pour répondre.