Skip to content

Commit cbaeb05

Browse files
authored
Add release workflow and prepare for 1.0.0 (#131)
1 parent 0da3898 commit cbaeb05

File tree

3 files changed

+85
-7
lines changed

3 files changed

+85
-7
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Android Release Build
2+
3+
on:
4+
release:
5+
types: [ published ]
6+
7+
jobs:
8+
build:
9+
runs-on: ubuntu-latest
10+
11+
Only run when the tag begins with the string "android-"
12+
if: ${{ startsWith(github.event.release.tag_name, 'android-') }}
13+
14+
defaults:
15+
run:
16+
working-directory: ./android
17+
18+
steps:
19+
- name: Checkout
20+
uses: actions/checkout@v3
21+
22+
- name: Set up JDK
23+
uses: actions/setup-java@v3
24+
with:
25+
java-version: '17'
26+
distribution: 'adopt'
27+
28+
- name: Decode Keystore
29+
env:
30+
ENCODED_KEYSTORE: ${{ secrets.ANDROID_RELEASE_KEYSTORE_BASE64 }}
31+
DECODED_KEYSTORE_PATH: ${{ secrets.ANDROID_RELEASE_KEYSTORE_PATH }}
32+
run: |
33+
echo $ENCODED_KEYSTORE > keystore_base64.txt
34+
base64 -d keystore_base64.txt > $DECODED_KEYSTORE_PATH
35+
36+
- name: Build AAB
37+
env:
38+
RUNNING_ENV: release_workflow
39+
DECODED_KEYSTORE_PATH: ${{ secrets.ANDROID_RELEASE_KEYSTORE_PATH }}
40+
RELEASE_KEY_ALIAS: ${{ secrets.ANDROID_RELEASE_KEY_ALIAS }}
41+
RELEASE_KEY_PASSWORD: ${{ secrets.ANDROID_RELEASE_KEY_PASSWORD }}
42+
RELEASE_STORE_PASSWORD: ${{ secrets.ANDROID_RELEASE_STORE_PASSWORD }}
43+
EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }}
44+
REAPER_API_KEY: ${{ secrets.REAPER_API_KEY }}
45+
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
46+
run: ./gradlew :app:bundleRelease
47+
48+
- name: Configure AWS Credentials
49+
uses: aws-actions/configure-aws-credentials@v1
50+
with:
51+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
52+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
53+
aws-region: us-west-1
54+
55+
- name: Extract version from tag
56+
run: echo "VERSION_NAME=$(echo ${{ github.event.release.tag_name }} | sed 's/android-//')" >> $GITHUB_ENV
57+
58+
- name: Upload AAB to S3
59+
env:
60+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
61+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
62+
run: |
63+
aws s3 cp app/build/outputs/bundle/release/app-release.aab s3://hn-artifacts/app-release-${{ env.VERSION_NAME }}.aab

android/app/build.gradle.kts

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ plugins {
88
alias(libs.plugins.sentry)
99
}
1010

11+
val runningEnv: String? = System.getenv("RUNNING_ENV")
12+
1113
android {
1214
namespace = "com.emergetools.hackernews"
1315
compileSdk = 34
@@ -16,16 +18,25 @@ android {
1618
applicationId = "com.emergetools.hackernews"
1719
minSdk = 30
1820
targetSdk = 34
19-
versionCode = 8
20-
versionName = "1.0-beta04"
21+
versionCode = 9
22+
versionName = "1.0.0"
2123

2224
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2325
vectorDrawables {
2426
useSupportLibrary = true
2527
}
2628
}
2729

28-
signingConfigs {}
30+
signingConfigs {
31+
if (runningEnv == "release_workflow") {
32+
create("release") {
33+
storeFile = file(System.getenv("DECODED_KEYSTORE_PATH"))
34+
keyAlias = System.getenv("RELEASE_KEY_ALIAS")
35+
keyPassword = System.getenv("RELEASE_KEY_PASSWORD")
36+
storePassword = System.getenv("RELEASE_STORE_PASSWORD")
37+
}
38+
}
39+
}
2940

3041
buildTypes {
3142
debug {
@@ -44,7 +55,8 @@ android {
4455
proguardFiles(
4556
getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
4657
)
47-
signingConfig = signingConfigs.getByName("debug")
58+
val signingConfigName = if (runningEnv == "release_workflow") "release" else "debug"
59+
signingConfigs.getByName(signingConfigName)
4860
}
4961
}
5062
buildFeatures {
@@ -74,7 +86,10 @@ emerge {
7486
}
7587

7688
reaper {
77-
enabledVariants.set(listOf("release"))
89+
// Only enable reaper on release workflow
90+
if (runningEnv == "release_workflow") {
91+
enabledVariants.set(listOf("release"))
92+
}
7893
publishableApiKey.set(System.getenv("REAPER_API_KEY"))
7994
}
8095

android/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
0// Top-level build file where you can add configuration options common to all sub-projects/modules.
1+
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22
plugins {
33
alias(libs.plugins.android.application) apply false
44
alias(libs.plugins.kotlin.android) apply false
55
alias(libs.plugins.compose.compiler) apply false
66
alias(libs.plugins.kotlin.serialization) apply false
77
alias(libs.plugins.kotlin.ksp) apply false
8-
}
8+
}

0 commit comments

Comments
 (0)