Skip to content

Commit 7b929f2

Browse files
authored
Merge pull request #42 from ryanw-mobile/chore/41-release-pipeline-look-for-and-insert-release-note-to-github-action-automated-builds
(#41) fix renovate pipeline and attach release note in release pipeline
2 parents 968a0a6 + 588adac commit 7b929f2

File tree

4 files changed

+66
-49
lines changed

4 files changed

+66
-49
lines changed

.github/workflows/renovate_check.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@ jobs:
3535

3636
- name: Debug Android Test
3737
run: xvfb-run ./gradlew :app:pixel2Api34DebugAndroidTest -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true -Pandroid.experimental.testOptions.managedDevices.maxConcurrentDevices=1 -Pandroid.experimental.testOptions.managedDevices.setupTimeoutMinutes=180
38-
env:
39-
CI: 'true'
4038

4139
- name: Gradle Check
4240
run: ./gradlew check assembleDebug --no-daemon
43-
env:
44-
CI: 'true'

.github/workflows/tag_create_release.yml

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ jobs:
77
build-and-release:
88
if: github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/release/')
99
runs-on: ubuntu-latest
10+
env:
11+
app_name: "cidemo"
1012
steps:
1113
- name: Decode Keystore
1214
id: decode_keystore
@@ -39,6 +41,21 @@ jobs:
3941
- name: Extract Version Number
4042
run: echo "version=${GITHUB_REF#refs/tags/release/}" >> $GITHUB_ENV
4143

44+
- name: Prepare Release Notes
45+
id: release_notes
46+
run: |
47+
file_path="release_notes/release_note_${{ env.version }}.md"
48+
if [ -f "$file_path" ]; then
49+
echo "Using release notes from $file_path"
50+
content=$(cat "$file_path")
51+
else
52+
echo "Using default release notes"
53+
content="Description of the release for version ${{ env.version }}"
54+
fi
55+
echo "release_body<<EOF" >> $GITHUB_OUTPUT
56+
echo "$content" >> $GITHUB_OUTPUT
57+
echo "EOF" >> $GITHUB_OUTPUT
58+
4259
- name: Create Release
4360
id: create_release
4461
uses: actions/create-release@v1
@@ -49,7 +66,7 @@ jobs:
4966
release_name: Release ${{ env.version }}
5067
draft: false
5168
prerelease: false
52-
body: "Description of the release for version ${{ env.version }}"
69+
body: ${{ steps.release_notes.outputs.release_body }}
5370
commitish: ${{ github.sha }}
5471

5572
- name: Upload Release Asset Mapping
@@ -65,7 +82,7 @@ jobs:
6582

6683
- name: Find APK file
6784
run: |
68-
apk_path=$(find ./app/build/outputs/apk/release -name "cidemo-*.apk" | head -n 1)
85+
apk_path=$(find ./app/build/outputs/apk/release -name "${{ env.app_name }}-*.apk" | head -n 1)
6986
echo "apk_path=$apk_path" >> $GITHUB_ENV
7087
7188
- name: Upload Release Asset APK
@@ -80,7 +97,7 @@ jobs:
8097

8198
- name: Find AAB file
8299
run: |
83-
aab_path=$(find ./app/build/outputs/bundle/release -name "cidemo-*.aab" | head -n 1)
100+
aab_path=$(find ./app/build/outputs/bundle/release -name "${{ env.app_name }}-*.aab" | head -n 1)
84101
echo "aab_path=$aab_path" >> $GITHUB_ENV
85102
86103
- name: Upload Release Asset AAB

app/build.gradle.kts

Lines changed: 38 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -175,55 +175,51 @@ private fun BaseAppModuleExtension.setupPackagingResourcesDeduplication() {
175175
}
176176

177177
private fun BaseAppModuleExtension.setupSigningAndBuildTypes() {
178-
signingConfigs {
179-
create("releaseSigningConfig") {
180-
// Only initialise the signing config when a Release or Bundle task is being executed.
181-
// This prevents Gradle sync or debug builds from attempting to load the keystore,
182-
// which could fail if the keystore or environment variables are not available.
183-
// SigningConfig itself is only wired to the 'release' build type, so this guard avoids unnecessary setup.
184-
val isReleaseBuild =
185-
gradle.startParameter.taskNames.any {
186-
it.contains("Release", ignoreCase = true) ||
187-
it.contains("Bundle", ignoreCase = true) ||
188-
it.equals("build", ignoreCase = true)
189-
}
178+
val releaseSigningConfigName = "releaseSigningConfig"
179+
val timestamp = SimpleDateFormat("yyyyMMdd-HHmmss").format(Date())
180+
val baseName = "$productApkName-${libs.versions.versionName.get()}-$timestamp"
181+
val isReleaseBuild = gradle.startParameter.taskNames.any {
182+
it.contains("Release", ignoreCase = true)
183+
|| it.contains("Bundle", ignoreCase = true)
184+
|| it.equals("build", ignoreCase = true)
185+
}
190186

191-
if (isReleaseBuild || isRunningOnCI) {
192-
val keystorePropertiesFile = file("../../keystore.properties")
187+
extensions.configure<BasePluginExtension> { archivesName.set(baseName) }
193188

194-
if (isRunningOnCI || !keystorePropertiesFile.exists()) {
195-
println("\uFE0F Signing Config: using environment variables")
196-
keyAlias = System.getenv("CI_ANDROID_KEYSTORE_ALIAS")
197-
keyPassword = System.getenv("CI_ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD")
198-
storeFile = file(System.getenv("KEYSTORE_LOCATION"))
199-
storePassword = System.getenv("CI_ANDROID_KEYSTORE_PASSWORD")
200-
} else {
201-
println("\uFE0F Signing Config: using keystore properties")
202-
val properties = Properties()
203-
InputStreamReader(
204-
FileInputStream(keystorePropertiesFile),
205-
Charsets.UTF_8,
206-
).use { reader ->
207-
properties.load(reader)
208-
}
189+
signingConfigs.create(releaseSigningConfigName) {
190+
// Only initialise the signing config when a Release or Bundle task is being executed.
191+
// This prevents Gradle sync or debug builds from attempting to load the keystore,
192+
// which could fail if the keystore or environment variables are not available.
193+
// SigningConfig itself is only wired to the 'release' build type, so this guard avoids unnecessary setup.
194+
if (isReleaseBuild) {
195+
val keystorePropertiesFile = file("../../keystore.properties")
209196

210-
keyAlias = properties.getProperty("alias")
211-
keyPassword = properties.getProperty("pass")
212-
storeFile = file(properties.getProperty("store"))
213-
storePassword = properties.getProperty("storePass")
214-
}
197+
if (isRunningOnCI || !keystorePropertiesFile.exists()) {
198+
println("\uFE0F Signing Config: using environment variables")
199+
keyAlias = System.getenv("CI_ANDROID_KEYSTORE_ALIAS")
200+
keyPassword = System.getenv("CI_ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD")
201+
storeFile = file(System.getenv("KEYSTORE_LOCATION"))
202+
storePassword = System.getenv("CI_ANDROID_KEYSTORE_PASSWORD")
215203
} else {
216-
println("\uFE0F Warning: Signing Config not created for non-release builds.")
204+
println("\uFE0F Signing Config: using keystore properties")
205+
val properties = Properties()
206+
InputStreamReader(
207+
FileInputStream(keystorePropertiesFile),
208+
Charsets.UTF_8,
209+
).use { reader ->
210+
properties.load(reader)
211+
}
212+
213+
keyAlias = properties.getProperty("alias")
214+
keyPassword = properties.getProperty("pass")
215+
storeFile = file(properties.getProperty("store"))
216+
storePassword = properties.getProperty("storePass")
217217
}
218+
} else {
219+
println("\uFE0F Signing Config: not created for non-release builds.")
218220
}
219221
}
220222

221-
val timestamp = SimpleDateFormat("yyyyMMdd-HHmmss").format(Date())
222-
val baseName = "$productApkName-${libs.versions.versionName.get()}-$timestamp"
223-
extensions.configure<BasePluginExtension> {
224-
archivesName.set(baseName)
225-
}
226-
227223
buildTypes {
228224
fun setOutputFileName() {
229225
applicationVariants.all {
@@ -253,7 +249,7 @@ private fun BaseAppModuleExtension.setupSigningAndBuildTypes() {
253249
"proguard-rules.pro",
254250
),
255251
)
256-
signingConfig = signingConfigs.getByName("releaseSigningConfig")
252+
signingConfig = signingConfigs.getByName(name = releaseSigningConfigName)
257253
setOutputFileName()
258254
}
259255
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
This release was generated by Github Actions.
2+
3+
## What's Changed
4+
5+
* Update Gradle to handle Renovate tests without keystore
6+
* Update CI pipeline to attach release note automatically
7+
8+
**Full Changelog**: https://github.com/ryanw-mobile/testlab-release-ci/commits/release/v1.1.0

0 commit comments

Comments
 (0)