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

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. • 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 ☕
  2. • Fiabilité • Reproducibilité • Documentation • Fun 5 •

    Ca prend du temps https://xkcd.com/1319/ Pourquoi automatiser ?
  3. • 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 ?
  4. 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é
  5. 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
  6. 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
  7. 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
  8. 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