###### tags: `Hikingbook` `Release` `Flow Chart`
[TOC]
# Conduct Release Flow
## Steps
1. Modify the **Version Name** and **Version Code** in 'app/build.gradle' which under the Hikingbook Android Project
* **Version Name**: Outdoor version number
* **Version Code**: Indoor version number
2. Merge **develope branch** to **master brance**
3. Generate the APK file
4. Put the APK file to [hikingbook-android GCP storage](https://console.cloud.google.com/storage/browser/hikingbook-android;tab=objects?prefix=&forceOnObjectsSortingFiltering=false) and modify APK name to `hikingbook-v'CodeName'.apk`
* **For example**: `hikingbook-v0.1.apk`
5. Put the APK file to [Android Daily Build](https://drive.google.com/drive/folders/1RIcnwYi21GVPWulQ55Gv-WiIGhvVoOpp) and modify APK name to `hikingbook-v'CodeName'-versionCode-'X'-'Time of creating APK'-candidate.apk`
* **For example**: `hikingbook-v0.1-versionCode-1-202009281305-candidate.apk`
6. Change the context of `https://hikingbook.net/android/latest` API
* **versionCode** -> **Current APK Version Code**
* **versionName** -> **Current APK Version Name**
* **apkURL** -> **APK url which on hikingbook-android GCP storage**
* **apkSizeInMB** -> **Current APK size (In MB)**
* (Option) **apkDescription** -> **List the change in current APK**
* **updatedAt** -> **Current time**
7. Update the APK link on landing page+
8. Create the new **release branch** (eq. release-0.1.1)
9. Create new **release tag** and edit the **change log**
10. Create the **Change log ticket** on Asana (eq. [Android v0.1.1] Changelog) and edit the chang log
11. Finish
## Flow Chart
```flow
st=>start: Start
e=>end: End
op1=>operation: Modify the Version Name and Version Code
op2=>operation: Merge develope branch to master brance
op3=>operation: Generate the APK file
op4=>operation: Put the APK file to GCP storage
op5=>operation: Put the APK file to Daily build
op6=>operation: Change the context of '/android/latest' API
op7=>operation: Update the APK link on landing page
op8=>operation: Create the new release branch
op9=>operation: Create new release tag and edit the changelog
op10=>operation: Create changelog ticket on Asana
st->op1->op2->op3->op4->op5->op6->op7->op8->op9->op10->e
```