Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

@martinbonnin @mgauzins Compilez, déployez et gérez votre CI en Kotlin

Slide 3

Slide 3 text

● 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 ☕

Slide 4

Slide 4 text

4 4 Jira Github Slack Bitrise Transifex Play console Appcenter Environment

Slide 5

Slide 5 text

● Fiabilité ● Reproducibilité ● Documentation ● Fun 5 ● Ca prend du temps https://xkcd.com/1319/ Pourquoi automatiser ?

Slide 6

Slide 6 text

● 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 ?

Slide 7

Slide 7 text

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é

Slide 8

Slide 8 text

Kinta 8 https://github.com/dailymotion/kinta

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Demo 12

Slide 13

Slide 13 text

Personnalisation 13

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

15 ● https://github.com/dailymotion/kinta ● Kinta-cli ● Kinta-lib ● Envoyez nous des et des ⭐⭐⭐⭐⭐ OpenSource

Slide 16

Slide 16 text

Merci ! 16