# Releasing In general it is desirable to release all aspects of DevFun even for untouched modules for point-releases etc. This is to done to simplify the documentation and installation process for users, as well as for our own sanity, rather than having different versions for every other module. - [Release Process](#release-process) - [PlantUML](#plantuml) - [Doctoc](#doctoc) - [GitHub Pages](#github-pages) - [Artifacts](#artifacts) - [Modules](#modules) - [Gradle Plugin](#gradle-plugin) - [TLDR;](#tldr) # Release Process Due to the different module types/aspects (a Gradle plugin, java and android libs, Dokka/Javadoc generation, GitHub pages, etc.) there are a number of steps that need to be run in a specific order: 1. Finalize and tag release commit (latest git tag is in referenced in documentation) 2. Update [UML](#plantuml) (if needed) 3. Update [Doctoc](#doctoc) (README, RELEASING, and Wiki etc.) _before GH Pages as it may affect Wiki object line numbers_ 4. Update [GitHub Pages](#github-pages) _must be done before artifact release for documentation linking_ 5. Build/upload [Artifacts](#artifacts) 6. Merge/push changes/tags etc. _should be done after artifacts are deployed to ensure README is valid at time of push_ ## PlantUML [PlantUML](http://plantuml.com/) is used to generate UML images (gh-pages/assets/uml/). To (re)generate UML images/image maps: ```bash ./gradlew renderPlantUml ``` To preview PlantUML in the IDE there is an IntelliJ/Android Studio plugin. For linux (and probably Mac, not sure about Windows) you will also need graphviz: ```bash sudo apt install graphviz ``` ## Doctoc [Doctoc](https://github.com/thlorenz/doctoc/) is used to generate the README and various Wiki entries table of contents. Install using npn: ```bash npm install -g doctoc ``` It is used for the README and RELEASING documents and should be run whenever they are altered: ```bash doctoc *.md --github --notitle ``` It is also used in the Wiki (currently only `Components.kt`), however the Dokka task will handle that automatically (see `dokka/build.gradle.kts#L126`), but if need be can be run manually (due to issues with Dokka generation we need to adjust the output with `sed` as well): ```bash doctoc dokka/src/main/java/wiki/Components.kt --github --notitle && sed '/