2. Ouvrir une branche github 3. Coder... 4. Créer une pull request 5. Déplacer le ticket 6. Merger la pull request 7. Déplacer le ticket 8. Créér une alpha ◦ Incrémenter version ◦ Tag ◦ Compiler ◦ Push ◦ Archiver 9. Envoyer un message aux designers/product owners 10. Intégrer les retours 11. Revenir à l’étape 1. • Envoyer les traductions • Récupérer les traductions • Mettre à jour le changelog • Notifier la nouvelle version sur jira • Envoyer en beta • Mettre le changelog sur le play store. • Démarrer le rollout • Et aussi sur Amazon... ➡ Et tout nettoyer à la fin
• Est-ce qu’il faut échapper les ‘\’ ? • Comment faire une requete HTTP en ruby ? • Et parser un Json en go ? • Avec Kotlin, pas de changement de Contexte 11
◦ Scripts d’installations ◦ Migrations vers le Kotlin Gradle DSL • JVM nécessaire • Pas vraiment prévu pour des projets à plusieurs fichiers. Kscript - Conclusion 31
do key="$1" case $key in -e|--extension) EXTENSION="$2" shift # past argument shift # past value ;; --default) DEFAULT=YES shift # past argument ;; *) # unknown option POSITIONAL+=("$1") # save it in an array for later shift # past argument ;; esac done set -- "${POSITIONAL[@]}" # restore positional parameters
by option().int().default(1) val name by option(help = "Votre nom").required() override fun run() { for (i in 1..count) { // No need to cast echo("Hello " + name.toString() + "!") } } }
$ ./hello --count DevFest --name Paris Error: Invalid value for "--count": DevFest is not a valid integer $ ./hello --ooops Error: No such option "--ooops"
option(help = "Nombre de fois").int().default(1) val name by option(help = "Votre nom").required() override fun run() { for (i in 1..count) { echo("Hello $name!") } } }
versionCode=14500 ◦ Génère un aab signé + universal apk ◦ Exécute tous les test/lint ◦ Génère le Changelog ◦ Envoie sur appcenter ◦ Envoie un message sur slack
help = "Makes all tests and builds a release.") { val tag by argument(name = "tag", help = "The tag to build").long() val flavor by option(help = "The flavor to build. Will build all flavor if not specified.") .choice("alpha", "playStore") val build by option(help = "The buildType to build. Will build all buildTypes if not specified.") .choice("debug", "release") override fun run() { // Build the tag } }
help = "Makes all tests and builds a release.") { val tag by argument(name = "tag", help = "The tag to build").long() val flavor by option(help = "The flavor to build. Will build all flavor if not specified.") .choice("alpha", "playStore") val build by option(help = "The buildType to build. Will build all buildTypes if not specified.") .choice("debug", "release") override fun run() { // Build the tag } }
help = "Makes all tests and builds a release.") { val tag by argument(name = "tag", help = "The tag to build").long() val flavor by option(help = "The flavor to build. Will build all flavor if not specified.") .choice("alpha", "playStore") val build by option(help = "The buildType to build. Will build all buildTypes if not specified.") .choice("debug", "release") override fun run() { checkoutVersion(tag) executeGradle(flavor, build) computeChangelog() deploy(flavor, build, tag) sendSlack(tag) } }
val destination: String) val json = Json.stringify( PostData("new features and new bugs", "everyone") ) val data = Json.parse(PostData.serializer(), json)
mapOf( "destination_name" to JsonPrimitive("Everyone"), "release_notes" to JsonPrimitive("new features and new bugs") ) ).toString() // Deserialization val releaseNotes = Json.parse(json) .jsonObject .getPrimitive("release_notes") .content
5. Mettre à jour le ticket startWork {TICKET_ID} 1. Assigner un ticket 2. Crééer une branche 7. Garder un repo propre 3. Code 6. Merger la pull request pr cleanLocal 74