Upgrade to Pro — share decks privately, control downloads, hide ads and more …

L'Intégration continue de zéro à héro

L'Intégration continue de zéro à héro

Workshop Frenchkit 2019

Avatar for Jeffrey Macko

Jeffrey Macko

October 07, 2019
Tweet

More Decks by Jeffrey Macko

Other Decks in Technology

Transcript

  1. Ordre du jour • Introduction • Pourquoi utiliser une intégration

    continue dans le cloud ? • Qu'est ce que l'intégration continue ? • Bitrise • L'intégration continue de zéro à héro • Conseils
  2. Pourquoi utiliser une integration continue dans le cloud ? •

    Simple à prendre en main et à utiliser • Performant • Modulaire • Réduit la maintenance au minimum • Réduit les coùts • Augmente la vélocité de vos devs
  3. Infrastructure / Hébergement • Gestion du parc machine (installation /

    entretien) • Réseaux (fiable et sans restriction) • Sécurité (garantir un environnement sécurisé) • Logiciels (installation / mise à jour)
  4. Environnement • macOS virtualisé • Garantit une meilleure reproductibilité des

    tests • Environnement maitrisé pour la generation de binaire • Instance "propre"
  5. Steps / Intégrations Script qui servent à abstraire la configuration

    des outils / logiciels installés dans la VM • xcode-test • xcode-analyze • xcode-archive • deploy-to-itunesconnect • slack-message • send-email-mailgun Bitrise nous fournit plus de 230 steps/ intégrations
  6. Git • Intégration avec votre repository • Déclenchement de Workflow

    en fonction d'évènements • Commit vers les repositories
  7. Bitrise • Automation for your mobile development process • Scale

    quickly and efficiently as you grow • Rapid iteration on your apps and your process
  8. Bitrise • $23M+ investment raised • 100,000+ mobile developers on

    Bitrise • 230+ steps/intégrations specifically for mobile • 70+ people working on Bitrise (and hiring) • 1 purpose: Help you build and operate better apps • Open Source lovers ❤
  9. Bitrise and Open Source Most of Bitrise Tools are OpenSource

    and can run locally on your mac. Developping intégrations is accessible to anyone and if you share it with the community simply add it back to the Bitrise Step Library with a Pull Request and reach out to us to get a $25/mo discount. Bitrise Github
  10. Connectons le projet à Bitrise Création de compte ou connexion

    avec votre compte Github où se trouve le fork
  11. Connectons le projet à Bitrise Et pour finir sélectionnez "Register

    your Webhook" Et pour finir, démarrons votre première build !
  12. Avoir son premier projet qui build Aie... votre premier build

    a échoué Ne vous inquiétez pas nous allons corriger cela
  13. Avoir son premier projet qui build Aller dans Workflow editor

    > Stack > Sélectionnez la dernière version de Xcode
  14. Avoir son premier projet qui build Aller dans Workflow editor

    > Workflow > Xcode Test for iOS > Device > iPhone 11 Pro
  15. Avoir son premier projet qui build Allez dans Build >

    Start and Schedule Build > Basic > master > primary
  16. Avoir son premier projet qui build Et voilà vous avez

    votre premier build d'une longue liste de build qui a réussit avec succés !
  17. Protéger son repository On va commencer par aller sur Github

    sur votre fork du projet puis aller dans les Settings
  18. Protéger son repository On tape master dans Branch name pattern

    puis on selectionne Require status checks pass before merging On sauvegarde en cliquant sur Save Changes en bas de l'écran
  19. Faire son premier workflow Supprimer ce qu'il a et le

    remplacer par ceci. Activer les triggers en cas de PR avec comme branch de destination master et le workflow TestPR
  20. Faire son premier workflow Tant que l'on y est on

    va aussi supprimer le trigger sur le push pour simplifier les choses
  21. Faire son premier workflow Maintenant on va faire une modification

    sur Github et verifier que tout fonctionne comme attendu On commence par aller sur l'app dans Bitrise puis on clique sur le badge bitrise
  22. Faire son premier workflow On ne commit pas directement on

    fait une branch afin de tester que le trigger fonctionne correctement
  23. Faire son premier workflow Maintenant on peut créer la PR

    et observer que les tests démarrent bien
  24. Faire son premier workflow Apres quelques minutes, on peut observer

    sur github que les tests sont passés avec succès.
  25. Archiver Maintenant que vous avez les bases, on va essayer

    de faire ce dont ont a tous besoin archiver l'app Je vous propose donc d'essayer par vos propres moyen de run le workflow deploy et d'archiver l'app en mode developpement
  26. Question ? N'hésitez pas à nous poser vos questions si

    vous avez fini plus tôt... • essayez de changer le numéro de build(CFBundleVersion) par le numéro de l'intégration Bitrise • essayez de changer le logo de l'app lorsqu'elle n'est pas builder pour l'app store • essayez de changer de générer un Changelog • essayez de générer l'app en mode app store uniquement quand on fait un tag • essayez de mettre en place l'auto signing
  27. Conseils • Organiser vos workflows avec des sous workflow (aide

    à réutilisation des features des workflows) • Versionnez votre bitrise.yml • Gérer bien les droits d'accès du compte bitrise / github / Apple qui fait le CI • Sauvegardez votre clef privée lors de la création du projet • Désactivez les notifications par email • Utilisez un _ comme premiere lettre de nom de workflow pour les rendre privé • Exploitez la puissance de fastlane combiné à Bitrise vous donnera des ailes
  28. Conseils • Mettez le minimum d'opérations longues par Workflow et

    si nécéssaire appeler un workflow B dans un workflow A pour augmenter le temps de vos VM • Utiliser l'api de déclanchement de workflow en cURL • Faites vos scripts complexes en swift • Ne faites pas tourner vos VM pour rien(sinon on aurait droit a Waiting for worker) • Archiver une version de votre app pour chaque PR afin de plus facilement pouvoir tester vos nouvelles features • Automatiser tout ce que vous pouvez c'est autant que vous n'aurez plus a faire • Utiliser le cache de bitrise comme filesystem persistant entre vos different run
  29. Automatiser la generation de votre library réseau TL;DR Swagger /

    OpenAPI + Bitrise = Beaucoup de temps gagner ! automating-your-api-client-library