Pour tous dev mobile, que ce soit seul ou en équipe, le déploiement d'une app sur le store de Google ou d'Apple est un passage (quasi) obligatoire.
Android et iOS sont différents jusque dans les IDE et les outils de build. Mais au delà de XCode, Android Studio, gradle... des libraries tels que fastlane vont tenter de réconcilier (un peu) les deux univers.
Nous allons voir comment intégrer la phase de publication dans le processus de build. Et cela via quelques lignes de script ou même directement dans les outils d'intégration continue tel que Jenkins
Présentation d'une solution Mobile DevOps implémentée à l'aide des solutions Microsoft: Microsoft Azure, Visual Studio Team Services, HockeyApp et Xamarin Test Cloud. Présentée dans le cadre du meetup @While_42 du 21 septembre 2016 à Vente Privée.
Outil de construction de projet adoré par certain, décrié par d'autres, que peut apporter Maven à vos projets ? Dans cette présentation pratique et sans angélisme, les points forts et les faiblesses de Maven ont été abordés. En marge de la présentation, Nicolas a présenté quelques bonnes pratiques à mettre en place sur les projets.
Microsoft experiences'16 - Tester, Monitorer et Déployer son application mobileAdrien Siffermann
Permis de tester
Disclaimer : Cette session ne s’adresse pas à ceux qui pensent que c’est une bonne idée d’affirmer :
• « On testera si on a le temps »,
• « Les utilisateurs nous remonteront les bugs »
• « Les développeurs testent et débuguent ce qu’ils ont conçu, c'est suffisant pour garantir la qualité de l‘application mobile »
• « Un test réussi sur un smartphone garantit que l’application fonctionne sur tous les autres appareils du même OS »
• « Le test d'application mobile, c'est comme le test de site web »
Cette session « Tester, Monitorer et Déployer son application mobile » est pour ceux qui ont conscience qu’une application offrant une expérience décevante est synonyme :
• D’abandon pur et simple par +60% de ses utilisateurs
• D’un changement immédiat pour la concurrence pour 34% d’entre eux
• D’un impact négatif pour la marque (réseau sociaux, rating, bouche à oreilles) par la moitié des utilisateurs
Au final, pas besoin de s’appeler Bond pour éliminer les bugs de votre app !
Inscrivez vous pour découvrir quels sont les usages du « testing mobile » et comment Visual Studio Team Services, Xamarin Tests Cloud & Hockey App, vous permettront d’améliorer la qualité de vos applications mobiles pour iOS, Android & Windows.
Tester, Monitorer et Déployer son application mobileMicrosoft
"Permis de tester
Disclaimer : Cette session ne s’adresse pas à ceux qui pensent que c’est une bonne idée d’affirmer :
• « On testera si on a le temps »,
• « Les utilisateurs nous remonteront les bugs »
• « Les développeurs testent et débuguent ce qu’ils ont conçu, c'est suffisant pour garantir la qualité de l‘application mobile »
• « Un test réussi sur un smartphone garantit que l’application fonctionne sur tous les autres appareils du même OS »
• « Le test d'application mobile, c'est comme le test de site web »
Cette session « Tester, Monitorer et Déployer son application mobile » est pour ceux qui ont conscience qu’une application offrant une expérience décevante est synonyme :
• D’abandon pur et simple par +60% de ses utilisateurs
• D’un changement immédiat pour la concurrence pour 34% d’entre eux
• D’un impact négatif pour la marque (réseau sociaux, rating, bouche à oreilles) par la moitié des utilisateurs
Au final, pas besoin de s’appeler Bond pour éliminer les bugs de votre app !
Inscrivez vous pour découvrir quels sont les usages du « testing mobile » et comment Visual Studio Team Services, Xamarin Tests Cloud & Hockey App, vous permettront d’améliorer la qualité de vos applications mobiles pour iOS, Android & Windows."
Présentation d'une solution Mobile DevOps implémentée à l'aide des solutions Microsoft: Microsoft Azure, Visual Studio Team Services, HockeyApp et Xamarin Test Cloud. Présentée dans le cadre du meetup @While_42 du 21 septembre 2016 à Vente Privée.
Outil de construction de projet adoré par certain, décrié par d'autres, que peut apporter Maven à vos projets ? Dans cette présentation pratique et sans angélisme, les points forts et les faiblesses de Maven ont été abordés. En marge de la présentation, Nicolas a présenté quelques bonnes pratiques à mettre en place sur les projets.
Microsoft experiences'16 - Tester, Monitorer et Déployer son application mobileAdrien Siffermann
Permis de tester
Disclaimer : Cette session ne s’adresse pas à ceux qui pensent que c’est une bonne idée d’affirmer :
• « On testera si on a le temps »,
• « Les utilisateurs nous remonteront les bugs »
• « Les développeurs testent et débuguent ce qu’ils ont conçu, c'est suffisant pour garantir la qualité de l‘application mobile »
• « Un test réussi sur un smartphone garantit que l’application fonctionne sur tous les autres appareils du même OS »
• « Le test d'application mobile, c'est comme le test de site web »
Cette session « Tester, Monitorer et Déployer son application mobile » est pour ceux qui ont conscience qu’une application offrant une expérience décevante est synonyme :
• D’abandon pur et simple par +60% de ses utilisateurs
• D’un changement immédiat pour la concurrence pour 34% d’entre eux
• D’un impact négatif pour la marque (réseau sociaux, rating, bouche à oreilles) par la moitié des utilisateurs
Au final, pas besoin de s’appeler Bond pour éliminer les bugs de votre app !
Inscrivez vous pour découvrir quels sont les usages du « testing mobile » et comment Visual Studio Team Services, Xamarin Tests Cloud & Hockey App, vous permettront d’améliorer la qualité de vos applications mobiles pour iOS, Android & Windows.
Tester, Monitorer et Déployer son application mobileMicrosoft
"Permis de tester
Disclaimer : Cette session ne s’adresse pas à ceux qui pensent que c’est une bonne idée d’affirmer :
• « On testera si on a le temps »,
• « Les utilisateurs nous remonteront les bugs »
• « Les développeurs testent et débuguent ce qu’ils ont conçu, c'est suffisant pour garantir la qualité de l‘application mobile »
• « Un test réussi sur un smartphone garantit que l’application fonctionne sur tous les autres appareils du même OS »
• « Le test d'application mobile, c'est comme le test de site web »
Cette session « Tester, Monitorer et Déployer son application mobile » est pour ceux qui ont conscience qu’une application offrant une expérience décevante est synonyme :
• D’abandon pur et simple par +60% de ses utilisateurs
• D’un changement immédiat pour la concurrence pour 34% d’entre eux
• D’un impact négatif pour la marque (réseau sociaux, rating, bouche à oreilles) par la moitié des utilisateurs
Au final, pas besoin de s’appeler Bond pour éliminer les bugs de votre app !
Inscrivez vous pour découvrir quels sont les usages du « testing mobile » et comment Visual Studio Team Services, Xamarin Tests Cloud & Hockey App, vous permettront d’améliorer la qualité de vos applications mobiles pour iOS, Android & Windows."
Jenkins Workflow plugin lets you write Jenkins jobs as pipelines using the Groovy programming language
Talk given in french at the Lyon JUG - 15/12/2015
Exemple Pratique With Selenium WebDriver | Selenium WebDriver Tutorial | Selenium
Selenium WebDriver AVEC JAVA
Selenium est un ensemble d'outils robustes qui prend en charge le développement rapide de l'automatisation des tests pour les applications Web.Selenium a été créé par Jason Huggins en 2004.
WebDriver est un outil pour automatiser les applications Web de test. Il est populairement connu sous le nom de sélénium 2.0.
Simon Stewart a créé WebDriver vers 2006, lorsque les navigateurs et les applications Web devenaient plus puissants et plus restrictifs avec des programmes JavaScript comme Selenium Core
youtube : https://www.youtube.com/channel/UCMhJ-OiC-drUqbBldbRMZvA
Présentation de Maven et de son utilisation en entreprise dans le cadre du Ch'ti JUG, le 15 juin 2009.
Pourquoi Maven ? Pourquoi l'adopter ? Les bonnes et mauvaise pratiques. Son avenir ...
Le "feature toggle", ou la capacité à activer ou désactiver une fonctionnalité à chaud, est souvent associée à une astuce de développement au service du Continuous Delivery. On peut pousser du code en production qui n'est pas complètement finalisé et introduire de la dette technique... mais il peut être tellement plus utile !!!!! Après un panorama de quelques cas d'usages très concrets, je vous propose de détailler les capacités du framework FF4J, les choix d'implémentation, les références en production, les killers features ainsi que les prochaines évolutions.
Publier une application mobile en un clicFabernovel
A l'occasion de la conférence web2day du 13 juin 2018, Claire Dufretelle, Head of Product Management chez Fabernovel Technologies, prend la parole sur l'intégration continue sur mobile & une introduction à Fastlane.
"Il est extrêmement pénible de publier une application mobile, les étapes étant nombreuses et complexes. La moindre erreur peut obliger à tout recommencer. Une mise en production de quelques heures peut finalement prendre la journée. Et pourtant, le sujet est accessible à tous, même à ceux qui ne sont pas développeurs professionnels.
> Il ne faut pas laisser faire à un humain un travail de robot mais automatiser
> L’automatisation de la publication se fait aisément grâce à un ensemble d’outils : Fastlane
> Fastlane peut être customisé à loisir pour s’adapter à vos process
> Il est possible de pousser la customisation très loin jusqu’à la publication d'une application mobile
>> Tout le monde peut se lancer pour publier une application mobile en un clic."
Jenkins Workflow plugin lets you write Jenkins jobs as pipelines using the Groovy programming language
Talk given in french at the Lyon JUG - 15/12/2015
Exemple Pratique With Selenium WebDriver | Selenium WebDriver Tutorial | Selenium
Selenium WebDriver AVEC JAVA
Selenium est un ensemble d'outils robustes qui prend en charge le développement rapide de l'automatisation des tests pour les applications Web.Selenium a été créé par Jason Huggins en 2004.
WebDriver est un outil pour automatiser les applications Web de test. Il est populairement connu sous le nom de sélénium 2.0.
Simon Stewart a créé WebDriver vers 2006, lorsque les navigateurs et les applications Web devenaient plus puissants et plus restrictifs avec des programmes JavaScript comme Selenium Core
youtube : https://www.youtube.com/channel/UCMhJ-OiC-drUqbBldbRMZvA
Présentation de Maven et de son utilisation en entreprise dans le cadre du Ch'ti JUG, le 15 juin 2009.
Pourquoi Maven ? Pourquoi l'adopter ? Les bonnes et mauvaise pratiques. Son avenir ...
Le "feature toggle", ou la capacité à activer ou désactiver une fonctionnalité à chaud, est souvent associée à une astuce de développement au service du Continuous Delivery. On peut pousser du code en production qui n'est pas complètement finalisé et introduire de la dette technique... mais il peut être tellement plus utile !!!!! Après un panorama de quelques cas d'usages très concrets, je vous propose de détailler les capacités du framework FF4J, les choix d'implémentation, les références en production, les killers features ainsi que les prochaines évolutions.
Publier une application mobile en un clicFabernovel
A l'occasion de la conférence web2day du 13 juin 2018, Claire Dufretelle, Head of Product Management chez Fabernovel Technologies, prend la parole sur l'intégration continue sur mobile & une introduction à Fastlane.
"Il est extrêmement pénible de publier une application mobile, les étapes étant nombreuses et complexes. La moindre erreur peut obliger à tout recommencer. Une mise en production de quelques heures peut finalement prendre la journée. Et pourtant, le sujet est accessible à tous, même à ceux qui ne sont pas développeurs professionnels.
> Il ne faut pas laisser faire à un humain un travail de robot mais automatiser
> L’automatisation de la publication se fait aisément grâce à un ensemble d’outils : Fastlane
> Fastlane peut être customisé à loisir pour s’adapter à vos process
> Il est possible de pousser la customisation très loin jusqu’à la publication d'une application mobile
>> Tout le monde peut se lancer pour publier une application mobile en un clic."
Présentation Versusmind de la Plateforme Meteor par Arthur Maroulier : Meteor est une série de projets 100% open source intégrés pour créer une plateforme d'application JavaScript complète pour le développement d'applications réactives sur web et mobile.
Android Lab Test : La reconnaissance vocale (français)Bruno Delb
Android Lab Test : La reconnaissance vocale (français)
Vidéo de tutoriel sur Youtube : https://www.youtube.com/playlist?list=PLL2Z3bzdO25yHwIV3XdMzKs61At0Ldh6L
Visitez http://www.AndroidLabTest.com
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
NodeJs, GruntJs, Bower, Karma, ... des buzzwords dont nous entendons parler, que nous voyons passer dans les blogs/articles. Mais à quoi servent-ils ?
Comment industrialiser nos développements Javascript ? Mettre en place des tests unitaires dans une application Web ? Générer de la documentation ? Des métriques qualités ? La couverture de code ? Comme avec Maven ? Nous verrons concrètement comment articuler tous ces outils autour d'une application école, pour démystifier tout ça.
L’état de l’art des tests front-end
Maîtriser et fiabiliser son code sont aujourd’hui devenus incontournables pour tout développeur devant faire face à des architectures Web de plus en plus riches et complexes.
Il existe des outils pour réaliser des tests front-end d’applications Web et répondre aux besoins d’un développement de qualité.
Nous vous invitons ici à parcourir l’écosystème de ces tests front-end d’applications Web. Que vous soyez déjà convaincus par les tests ou tout simplement curieux, ce document vous guidera pour les mettre en place sur vos projets.
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
Aujourd'hui, le terme "déploiement" est un incontournable dans le métier des devOps. Comment en sommes-nous arrivés à intégrer au mieux les mises en prod ? Faisons un bref historique pour ensuite terminer sur les nouvelles techniques de déploiement de nos applications PHP et leur mise en place dans l'intégration continue.
Alternative au Tramway de la ville de Quebec Rev 1 sml.pdfDaniel Bedard
CDPQ Infra dévoile un plan de mobilité de 15 G$ sur 15 ans pour la région de Québec. Une alternative plus économique et rapide, ne serait-elle pas posssible?
- Valoriser les infrastructures ferroviaires du CN, en créant un Réseau Express Métropolitain (REM) plutôt qu'un nouveau tramway ou une combinaison des 2.
- Optimiser l'utilisation des rails pour un transport combiné des marchandises et des personnes, en accordant une priorité aux déplacements des personnes aux heures de pointes.
- Intégrer un téléphérique transrives comme 3ème lien urbain dédiés aux piétons et cyclistes avec correspondance avec le REM.
- Le 3 ème lien routier est repensé en intégrant un tunnel routier qui se prolonge avec le nouveau pont de l'Île d'Orléans et quelques réaménagemet de ses chausées.
https://www.linkedin.com/in/bedarddaniel/
English:
CDPQ Infra unveils a $15 billion, 15-year mobility plan for the Quebec region. Wouldn't a more economical and faster alternative be possible?
Leverage CN's railway infrastructure by creating a Metropolitan Express Network (REM) instead of a new tramway or a combination of both.
Optimize the use of rails for combined freight and passenger transport, giving priority to passenger travel during peak hours.
Integrate a cross-river cable car as a third urban link dedicated to pedestrians and cyclists, with connections to the REM.
Rethink the third road link by integrating a road tunnel that extends with the new Île d'Orléans bridge and some reconfiguration of its lanes.
https://www.linkedin.com/in/bedarddaniel/
11. #DevFestToulouse
Étapes iOS
Checkout du projet
Configuration du compte dev
Récupération des certificats
Build / Archive
iTunes Connect
Screenshot / Submit
Gestion des beta testeur
Branchement Crashlytics
Commit de la nouvelle version
Création de l'app dans iTunes Connect
12. #DevFestToulouse
Étapes Android
Checkout du projet
Récupération du sdk dans la bonne version
Configuration du compte dev
Création du keystore
Configuration de la signature dans le build
Build / Archive
Google Play store
Screenshot / Submit
Gestion des beta testeur
Branchement Crashlytics
Commit de la nouvelle version
Création de l'app dans Google Play
Ajout du changelog
40. #DevFestToulouse
Android
Création d’un Google service account
(uniquement par le propriétaire du compte)
Téléchargement d’une clé .json
Configuration des droits sur l’app souhaitée
41. #DevFestToulouse
fastlane - iOS
Initialisation de l’app lane :produce do
produce(
username: 'user@company.com',
app_identifier: 'com.company.app',
app_name: 'App1',
language: 'Occitan',
app_version: '1.0',
sku: '123')
end
42. #DevFestToulouse
fastlane - iOS
Initialisation de l’app
Cibles pour lancer les Tests
lane :test do
scan(
scheme: "DevFestTlse"
workspace: "DevFestTlse.xcworkspace",
devices: ["iPhone X", "iPad Air"]
)
end
43. #DevFestToulouse
fastlane - iOS
Initialisation de l’app
Cibles pour lancer les Tests
Déployer en préprod
lane :alpha do
match(type: "appstore")
gym(scheme: "DevFestTlse")
pilot
increment_build_number
commit_version_bump
push_to_git_remote
end
47. #DevFestToulouse
fastlane - Android
Initialisation de l’app (Appfile)
Cibles pour lancer les Tests
Déployer en préprod
desc "Submit a new Beta to Crashlytics Beta"
lane :beta do
gradle(task: "assembleRelease")
crashlytics
end
48. #DevFestToulouse
fastlane - Android
Initialisation de l’app (Appfile)
Cibles pour lancer les Tests
Déployer en préprod
Publier en production
desc "Deploy a new version to the Google Play"
lane :deploy do
gradle(task: "assembleRelease")
supply
end
59. #DevFestToulouse
Jenkinsfile
if (env.BRANCH_NAME == 'alpha'){
sh 'fastlane alpha'
}else if (env.BRANCH_NAME == 'beta'){
sh 'fastlane alphaToBeta'
}else{
sh 'fastlane build'
junit '**/test_output/*.junit'
}
60. #DevFestToulouse
Passage en alpha
● fastlane alpha
lane :alpha do
gradle(task: "assembleRelease")
supply(
track: 'alpha',
apk: '../app-release.apk'
)
end
lane :alpha do
match(type: "appstore")
gym(scheme: "Example")
pilot
increment_build_number
commit_version_bump(
message: "Bump version"
)
push_to_git_remote(
local_branch: git_branch
)
end
61. #DevFestToulouse
Passage en beta
● fastlane alphaToBeta
desc "Move from alpha to beta"
lane :alphaToBeta do
supply(
track: "alpha",
track_promote_to: "beta",
skip_upload_apk: true
)
end
desc "Move from alpha to beta"
lane :alphaToBeta do
pilot(
distribute_external: true,
changelog: "Nouvelle beta",
groups: "Beta testeurs"
)
end
62. #DevFestToulouse
Passage en Prod
● fastlane alphaToBeta
desc "Move from beta to Production"
lane :betaToProd do
supply(
track: "beta",
track_promote_to: "production",
skip_upload_apk: true
)
end
desc "Deploys to the App Store"
lane :deploy do
deliver(
force: true,
submit_for_review: true,
automatic_release: false
)
end
67. #DevFestToulouse
Android
Gestion du versionCode
Upload vers Crashlytics / Hockey
Versionning de la fiche du store
● Descriptions
└── fastlane
└── metadata
└── android
├── fr-FR
│ ├── full_description.txt
│ ├── short_description.txt
│ ├── title.txt
│ └── video.txt
└── en-US
68. #DevFestToulouse
Android
Gestion du versionCode
Upload vers Crashlytics / Hockey
Versionning de la fiche du store
● Descriptions
● Screenshots
└── fastlane
└── metadata
└── android
├── fr-FR
│ └── images
│ └── phoneScreenshots
│ └── sevenInchScreenshots
│ └── tenInchScreenshots
│ └── tvScreenshots
└── en-US
69. #DevFestToulouse
Android
Gestion du versionCode
Upload vers Crashlytics / Hockey
Versionning de la fiche du store
● Descriptions
● Screenshots
● What’s new
└── fastlane
└── metadata
└── android
├── fr-FR
│ └── changelogs
│ ├── 10.txt
│ └── 12.txt
└── en-US
└── changelogs
└── 12.txt
70. #DevFestToulouse
Gestion du versionCode
Upload vers Crashlytics / Hockey
Versionning de la fiche du store
● Descriptions
● Screenshots
● What’s new
Android
desc "Update store description"
lane :updateStoreDescription do
supply(
skip_upload_apk: true
)
end
71. #DevFestToulouse
iOS
Gestion du versionCode
Upload vers Crashlytics / Hockey
Versionning de la fiche du store
● Descriptions
● Screenshots
● What’s new
Génération d’une page de boarding automatique pour Testflight
http://url.c-t.io/1
http://url.c-t.io/2
75. #DevFestToulouse
Lance les tests sur x devices dans y locale
Piloté depuis les tests UI
$ fastlane snapshot init
fastlane
let app = XCUIApplication()
setupSnapshot(app)
app.launch()
snapshot("01HomeScreen")
76. #DevFestToulouse
Génère des visuels
● device frame
● marketing
fastlane
lane :screenshots do
snapshot
frameit(white: true, path:
'./fastlane/screenshots')
end
Nanak => Nanak
Bonjour et merci d’être la pour nous écouter parler de devops mobile
Nanak => Nanak
Rapidement qui nous lui sommes, lui c’est Cedric moi c’est Florian
On vient de Tours et on est co fondateur d’un studio de developpement nommé Code-Troopers
Je fait de l’Android
Cedric fait de l’ios
Nanak => Nanak
Nanak => Nanak
Java Software developers, used to deliver multiple times per day thanks to proper automation,
our workflow makes us use this different set of tools :
* ansible
* vagrant
* packer
* docker
* maven
* gradle
* jenkins
Nanak => Samva
Our activity evolved and we now develop mobile apps too, one thing that was
bothering us was the latency between build and deploy.
Nanak => Samva
Our activity evolved and we now develop mobile apps too, one thing that was
bothering us was the latency between build and deploy.
Samva => Samva
Utiliser des API ou outiller tout ça pour ne pas galérer
Android side is offering a nice API, that we can call from gradle
Apple side is offering no API, and a click-a-drama workflow.
Samva => Samva
Un des premiers objectif pour nous c’est d’avoir un moyen de livrer qui nous permet de le faire depuis n’importe où très simplement.
Comme on le fait habituellement via un Jenkins utilisable facilement depuis nos téléphones (bon facilement ca reste à voir, sans blue ocean c’est CHAUD).
Pouvoir livrer une app en alpha / beta / prod sans avoir le laptop sous la main est hyper pratique
Un autre point c’est que ca nous permet d’avoir un moyen fiable et relativement rapide de déployer:
Fiable car on s’abstrait au maximum d’une particuliarité d’un env de dev spécifique
Rapide car nos machines de builds n’ont que ca a faire :)
Et en plus on a du feedback dans Slack
-----
Essayer de rapprocher de Festroopers sur le côté mise à jour décidée par le client.
We want to deliver our app with a jenkins job, thus allowing to do it from our phones / slack easily.
It allows us the following :
* reproduceability
* speed
* stability of the process
* confidence
Samva => Samva
Un autre point c’est que ca nous permet d’avoir un moyen fiable et relativement rapide de déployer:
Fiable car on s’abstrait au maximum d’une particuliarité d’un env de dev spécifique
Rapide car nos machines de builds n’ont que ca a faire :)
Et en plus on a du feedback dans Slack
Notre objectif était tout de même principalement motivé par le fait d’enfin réussir à faire ces tricks au baby-foot.
On s’entraine, mais c’est pas évident.
Bon assez parlé de l’objectif, maintenant on va rentrer dans le vif du sujet
Essayer de rapprocher de Festroopers sur le côté mise à jour décidée par le client.
We want to deliver our app with a jenkins job, thus allowing to do it from our phones / slack easily.
It allows us the following :
* reproduceability
* speed
* stability of the process
* confidence
Samva => Samva
Avant de chercher à outiller, il faut qu’on voie comment on fait habituellement pour construire une app mobile
Samva => Nanak
Côté iOS c’est un petit paquet d’étape, il y en a des faciles et commune a tous les projets, genre checkout, d’autres un peu pénibles car potentiellement lent (genre récupérer une version d’XCode dans la bonne version [surtout si c’est une ancienne]) et toute la partie compte apple et gestion des signatures peut carrément virer au cauchemard. Cela dit, une fois qu’on a tout ce qu’il faut sur son poste, on est bon pour bosser.
Nanak => Nanak
Nanak => Samva
Du coup, s’il faut livrer dans l’urgence une nouvelle version, on est à la merci de quelques problèmes
Samva => Samva
Du coup, s’il faut livrer dans l’urgence une nouvelle version, on est à la merci de quelques problèmes
Samva => Samva
Du coup pour tenter d’outiller tout ca et d’éviter le cas où on ne peut rien faire, il y a quand même quelques outils disponibles.
Pour les présenter on les répartir en deux principales phases du développement, le build puis le déploiement.
Samva => Nanak
On va donc commencer par parler génération du livrable, Florian comment ca se passe sous Android ?
Nanak => Nanak
Nanak => Nanak
Nanak => Nanak
Nanak => Nanak
Nanak => Nanak
Nanak => Nanak
>> CG entoure assembleRelease <<
Nanak => Nanak
Nanak => Samva
Samva => Samva
Du coup pour builder une app iOS on a quelques possibilité, déjà la version classique en utilisant XCode et en jouant du click click pour cibler “tous” les devices iOS et en lançant l’archivage (qui n’a pas de raccourci clavier bien sur, ca serait trop simple…)
Samva => Samva
Une autre solution peut être d’utiliser la ligne de commande avec xcodebuild, mais, pas sur que ce soit plus simple et sympa a utiliser que la version click click de Xcode au final, l’aide n’est pas rassurante en tout cas.
Samva => Samva
Enfin, et dans le cadre de ce qu’on vise, il y a aussi le plugin Jenkins XCode. C’est assez fastidieux à configurer et à utiliser, il faut bien sûr que Jenkins tourne sous OSX (ou qu’un slave tourne sous OSX) mais ca fonctionne (et ca invoque xcodebuild en fait)
Samva => Nanak
On est content on a notre APK / IPA, maintenant il faut le pousser aux clients
Nanak => Nanak
Nanak => Nanak
Les api sont bien et donne le controle a presque tout
Nanak => Samva
Samva => Samva
iTunes connect : gestion des certificats au passage
Les étapes sont également assez nombreuses, et assez fastidieuse, sachant qu’il arrive que ca ne se passe pas comme prévu et c’est en général à la fin de l’upload que tout se déclare.
Mais passons à un outil qui peut nous permettre d’y voir plus clair : fastlane
Choisir le build dans iTunes Connect
Samva => Samva
fastlane est l’outil de choix que nous allons vous présenter brièvement (car il est TRES complet) dans les slides à venir
Samva => Samva
Tout d’abord un peu d’histoire sur le projet, il a été créé par Felix Krause
Samva => Nanak
Comment on fait du coup pour utiliser fasltane?
Nanak => Samva
Samva => Samva
Samva => Nanak
f
Nanak => Nanak
Nanak => Samva
Samva => Samva
On peut aussi tout caler dans un AppFile à côté
Samva => Samva
Samva => Samva
Samva => Nanak
Nanak => Nanak
Nanak => Nanak
Nanak => Nanak
Nanak => Nanak
Nanak => Samva
Samva => Samva
Samva => Nanak
Nanak => Samva
Samva => Samva
C’est jenkins qui utilise fastlane le plus.
Samva => Samva
On a un jenkins sur un serveur chez OVH, qui se connecte a différents types de slaves:
Des noeuds docker android dans lesquels on a les différents SDK dont on a besoin (ou un acceptLicence qui va bien)
Une machine physique connectée à beaucoup de devices android différents
Un “vieux” MBP reconditionné et une OSX dans une VM (sous linux, oui c’est mal…)
Samva => Samva
On a un jenkins sur un serveur chez OVH, qui se connecte a différents types de slaves:
Des noeuds docker android dans lesquels on a les différents SDK dont on a besoin (ou un acceptLicence qui va bien)
Une machine physique connectée à beaucoup de devices android différents
Un “vieux” MBP reconditionné et une OSX dans une VM (sous linux, oui c’est mal…)
Samva => Samva
On a un jenkins sur un serveur chez OVH, qui se connecte a différents types de slaves:
Des noeuds docker android dans lesquels on a les différents SDK dont on a besoin (ou un acceptLicence qui va bien)
Une machine physique connectée à beaucoup de devices android différents
Un “vieux” MBP reconditionné et une OSX dans une VM (sous linux, oui c’est mal…)
Samva => Samva
On a un jenkins sur un serveur chez OVH, qui se connecte a différents types de slaves:
Des noeuds docker android dans lesquels on a les différents SDK dont on a besoin (ou un acceptLicence qui va bien)
Une machine physique connectée à beaucoup de devices android différents
Un “vieux” MBP reconditionné et une OSX dans une VM (sous linux, oui c’est mal…)
Samva => Samva
Jenkins multibranch avec le Jenkinsfile grace au pipelineMultibranch
Job qui merge master vers alpha, le merge déclenche le build, commit le version bump et le merge vers le master
Job de passage vers beta, appel à l’API iTunesConnect pour mise a dispo
Job de release, upload de la description, création de la version+1, promotion de beta vers prod (ou raccourci alpha -> prod)
Samva => Nanak
Nanak | Samva => Samva
pilot distribute --distribute_external true -w "Nouvelle beta" -g "Beta Testeurs"
Jenkins multibranch avec le Jenkinsfile
Job qui merge master vers alpha, le merge déclenche le build, commit le version bump et le merge vers le master
Job de passage vers beta, appel à l’API iTunesConnect pour mise a dispo
Job de release, upload de la description, création de la version+1, promotion de beta vers prod (ou raccourci alpha -> prod)
Samva | Nanak => Samva
pilot distribute --distribute_external true -w "Nouvelle beta" -g "Beta Testeurs"
Jenkins multibranch avec le Jenkinsfile
Job qui merge master vers alpha, le merge déclenche le build, commit le version bump et le merge vers le master
Job de passage vers beta, appel à l’API iTunesConnect pour mise a dispo
Job de release, upload de la description, création de la version+1, promotion de beta vers prod (ou raccourci alpha -> prod)
Samva => Nanak
fastlane deliver submit_build --build_number 830
pilot distribute --distribute_external true -w "Nouvelle beta" -g "Beta Testeurs"
Jenkins multibranch avec le Jenkinsfile
Job qui merge master vers alpha, le merge déclenche le build, commit le version bump et le merge vers le master
Job de passage vers beta, appel à l’API iTunesConnect pour mise a dispo
Job de release, upload de la description, création de la version+1, promotion de beta vers prod (ou raccourci alpha -> prod)
Nanak => Nanak
Révocation de clé
Possibilité de ne livrer qu’en beta pour limiter les blagues
Récupération des infos du store (versionning de la fiche du store si mise a jour par l’équipe commerciale)
Nanak => Nanak
Nanak => Nanak
Nanak => Nanak
Nanak => Nanak
Nanak => Nanak
Nanak => Nanak
Nanak => Samva
Une lane dédiée à la mise a jour de la description du store
Samva => Samva
Avec les dSYM
Description / Screenshot c’est bidirectionnel donc on peut “rattraper” un projet qui est déjà live
Samva => Samva
Samva => Samva
Samva => Samva
Bénéfices
Samva => Samva
Pas besoin de galérer avec la taille du simulateur
Samva => Nanak
Pas besoin de galérer avec la taille du simulateur
Nanak => Nanak
Extensible via des Shell scripts
Nanak => Samva
Samva => Samva
On a toujours le droit de perdre son temps.
Mais si on veut être efficace c’est possible
Samva => Samva
Server / mobile on fait pareil
Samva => Samva
Server / mobile on fait pareil
Samva => Samva
Gem install fastlane
Avec 8 bras et 1h de sommeil par jour