Déploiement sans Xcode

Hello à  tous.


Je suis actuellement entrain de configurer une machine d'intégration avec Jenkins.


La compilation et tout le reste fonctionne très bien. Si y'a des questions, je suis ouvert  :D  


Mais maintenant j'essaye d'automatiser des tests avec Calabash. Tous mes scripts fonctionnent bien (...ou presque).


 


xcodebuild en mode debug: OK


Déploiement: KO


Tests avec Calabash: OK


 


Enfaite, lorsque je compile via Xcode avec ma machine de dev et qu'ensuite je débranche mon device et que je le branche à  la machine d'intégration et que je lance les tests Calabash via Jenkins ça fonctionne.


Lorsque je build et que je déploie via Jenkins là  ça pose problème. Les tests Calabash refusent de se lancer. 


 


D'ou mon doute sur ma façon de déployer/builder. Auriez vous des idées?


Réponses

  • AliGatorAliGator Membre, Modérateur
    Je n'ai jamais utilisé Calabash (j'aimerai bien me pencher sur la question un jour mais le temps me manque), mais j'ai déjà  eu des soucis avec Jenkins quand il s'agit pour lui d'interagir avec l'UI.

    En effet, le client Jenkins qui tourne sur ton slave pour exécuter les jobs (c'est un exécutable Java, slave.jar de mémoire) tourne en tâche de fond, surtout si Jenkins est lancé comme un process par le système et pas comme une application avec UI par OSX. Du coup ce client Jenkins n'a pas accès aux couches graphiques et à  tout ce qui a attrait à  l'UI.

    Cela m'a déjà  posé problème lorsque j'avais des tâches Jenkins qui étaient sensé lancer le simulateur (donc une interface graphique) ou des choses comme cela, je me demande donc si ce n'est pas le même problème qui t'arrive avec Calabash. Bon en même temps tu dis que tu arrives à  lancer les tests Calabash via Jenkins si tu as compilé avec ta machine de dev, mais bon tu n'utilises peut-être même pas la même procédure pour lancer l'exécution de Calabash dans les 2 cas (un manuel, l'autre auto, un truc comme ça) ?

    Bref ce ne sont que des pistes, ça n'aide peut-être pas beaucoup, mais ça vaut le coup de creuser qd mm. En particulier regarde dans la Console.app sur ta machine Jenkins si tu n'as pas des messages d'erreur qui pourraient te mettre sur la voie.
  • NiClouNiClou Membre
    mars 2014 modifié #3

    Merci Ali,


    Alors enfaite je me suis connecté en su pour pouvoir jeter un coup d'oeil à  l'env jenkins.


     


    A priori Calabash lance instrument mais pas en graphique. Donc comme je me doutais pour compiler et deployer en mode "debug" comme avec xCode il y a une subtilité.


    J'utilise ios-deploy pour deployer. Un des arguments consiste à  lancer le debugger.


     


    Donc comment je procède:


    - Je compile en Debug (je le faisais déja)


    - Je déploie en debug mais comme ça lance GDB ça bloque mon job jenkins.


     


    A priori c'est un problème connu sur les forums Calabash, donc la solution (dégeulasse je le confesse) que j'ai trouvé:



    if [[ ${#CONNECTED_DEVICES[@]} -eq 1 && -z ${CONNECTED_DEVICES[0]} ]]; then
    die "No device connected"
    else
    for device in $CONNECTED_DEVICES; do
    $IOSDEPLOY -i $device_udid -b $SDK_BUILD/$BUILDCONFIGURATION-iphoneos/"`basename $SDK_SAMPLE`-cal.app" &
    sleep 10 #le temps du déploiement
    PID=$(jobs -p)
    echo $PID
    kill -9 $PID
    done
    fi

  • AliGatorAliGator Membre, Modérateur
    C'est quand même bizarre qu'ils n'aient pas prévu ce cas/problème, car bon un outil pour faire des tests applicatifs son but va quand même dans 90% des cas être d'être lancé par un automate type Jenkins ou Bot...
    Je veux dire c'est quand même pas aberrant ce que tu essayes de faire, au contraire c'est même l'usage logique qu'on a quand on met un outil comme Calabash en place, donc c'est quand même un bug majeur, non ?
  • Je sais pas trop.

    Concrètement quand t'utilise Calabash sur une machine de dev ça marche plutot bien. 


    On te dit bien sur la doc: https://github.com/calabash/calabash-ios


    "5. In Xcode, build your project using the -cal scheme"


    Et ça marche quand tu lances la cmd.


     


    Par contre avec Jenkins... C'est une autre histoire.

    Meme si la solution est trouvée, je vais essayer de trouver quelque chose de plus sain pour mon script.

     


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