$30 off During Our Annual Pro Sale. View Details »

Compilez - déployez et gérez votre CI Android en Kotlin

Compilez - déployez et gérez votre CI Android en Kotlin

mbonnin

April 20, 2020
Tweet

More Decks by mbonnin

Other Decks in Programming

Transcript

  1. Compilez, déployez et gérez votre CI en Kotlin Android Makers

    - 2020 1
  2. @martinbonnin @mgauzins Compilez, déployez et gérez votre CI en Kotlin

  3. • Gérer les traductions • Mettre à jour le Google

    Play (images, descriptions, archives) • Gérer les releases • Envoyer des notifications • Amazon, AppCenter, etc... 1. Prendre un ticket Jira 2. Se l’assigner 3. Créér une branche 4. Coder... 5. Faire une pull request 6. Déplacer le ticket en “In Review” 7. Fusionner la pull request 8. Déplacer le ticket en “In QA” 9. Créer une alpha a. Incrémenter la version b. Tag c. Push 10. Envoyer le changelog aux designers/PO 11. Intégrer les feedbacks... 12. … et recommencer ! Mais aussi... 3 Une journée classique ☕
  4. 4 4 Jira Github Slack Bitrise Transifex Play console Appcenter

    Environment
  5. • Fiabilité • Reproducibilité • Documentation • Fun 5 •

    Ca prend du temps https://xkcd.com/1319/ Pourquoi automatiser ?
  6. • Le langage de tous les jours ◦ Pas de

    changement de contexte ◦ Tout le monde connaît • Moderne • Des outils au top • 25 ans d’écosystème Java 6 Pourquoi Kotlin ?
  7. 7 Fastlane (Ruby) Transifex cli (Ruby) after_success.sh (Bash) generate_docs.sh (Bash)

    Github hub (Go) Scripts maison Outils tiers Outils génériques Ce qu’on a remplacé
  8. Kinta 8 https://github.com/dailymotion/kinta

  9. 9 Kinta : une application Kotlin basée sur CLIKT ◦

    Gradle ◦ Executable ◦ Lancement de workflows Application Kotlin ◦ Commandes, sous-commandes personnalisables ◦ Génération de l’aide ◦ Arguments, options avec typage Utilisation de CLIKT
  10. 10 kinta publish beta --archiveFile=app-release.aab Workflow: publication sur le store

    ◦ Charger une archive sur la console ◦ Créer une publication ◦ Compiler les notes de versions locales ◦ Charger les notes de versions sur la console
  11. object PublishPlayStore : CliktCommand( name = "publish", help = "Publish

    a version on the given track") { private val track by argument("--track", help = "The Play Store track") private val archiveFile by argument("--archiveFile") private val percent by option("--percent", help = "The user fraction receiving the update").double() override fun run() { // Beautiful code is coming... } } override fun run() { PlayStoreIntegration.uploadDraft( archiveFile = File(archiveFile), track = track ) PlayStoreIntegration.createRelease( track = track, listVersionCodes = listOf(versionCode), percent = percentToApply ) val changeLogs = LocalMetadataHelper.getChangelog(versionCode) PlayStoreIntegration.uploadWhatsNew( versionCode = versionCode, whatsNewProvider = changeLogs ) } 11 PublishPlayStore workflow
  12. Demo 12

  13. Personnalisation 13

  14. 4. Create a pull request 5. Move ticket state kinta

    startWork {TICKET_ID} 1. Assign a ticket 2. Create a branch 7. Move ticket state 8. Create an alpha Increment version Tag Push 9. Send a message 3. Code 6. Merge pull request (Oui, il faut coder...) kinta pr Ca on le fait pas en ligne de commande encore! kinta nightly 14 à Dailymotion
  15. 15 • https://github.com/dailymotion/kinta • Kinta-cli • Kinta-lib • Envoyez nous

    des et des ⭐⭐⭐⭐⭐ OpenSource
  16. Merci ! 16