signing key for dev-preview
This commit is contained in:
parent
050c661c9e
commit
9ce9a14299
6 changed files with 69 additions and 36 deletions
31
.github/workflows/build_benchmark.yml
vendored
31
.github/workflows/build_benchmark.yml
vendored
|
|
@ -83,28 +83,7 @@ jobs:
|
||||||
uses: gradle/actions/setup-gradle@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2
|
uses: gradle/actions/setup-gradle@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2
|
||||||
|
|
||||||
- name: Build Benchmark app and run unit tests
|
- name: Build Benchmark app and run unit tests
|
||||||
run: ./gradlew assembleDevBenchmark testDevBenchmarkUnitTest testReleaseUnitTest --stacktrace
|
run: ./gradlew assembleDevBenchmark testDevBenchmarkUnitTest testReleaseUnitTest -Pandroid.signingConfig=debug --stacktrace
|
||||||
|
|
||||||
- name: Upload artifacts
|
|
||||||
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
|
|
||||||
with:
|
|
||||||
path: "**/*.apk"
|
|
||||||
retention-days: 1
|
|
||||||
|
|
||||||
release-app:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs:
|
|
||||||
- prepare-build
|
|
||||||
- build-app
|
|
||||||
steps:
|
|
||||||
- name: Download artifacts
|
|
||||||
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
|
||||||
with:
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Setup Android SDK
|
|
||||||
run: |
|
|
||||||
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3"
|
|
||||||
|
|
||||||
- name: Sign APK
|
- name: Sign APK
|
||||||
uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1
|
uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1
|
||||||
|
|
@ -143,11 +122,5 @@ jobs:
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
|
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
|
||||||
with:
|
with:
|
||||||
path: "Komikku-${{ needs.prepare-build.outputs.TAG_NAME }}.apk"
|
path: "**/*.apk"
|
||||||
retention-days: 90
|
|
||||||
|
|
||||||
- name: Upload artifacts
|
|
||||||
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
|
|
||||||
with:
|
|
||||||
path: "Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk"
|
|
||||||
retention-days: 90
|
retention-days: 90
|
||||||
|
|
|
||||||
2
.github/workflows/build_check.yml
vendored
2
.github/workflows/build_check.yml
vendored
|
|
@ -82,7 +82,7 @@ jobs:
|
||||||
echo "VERSION_TAG=$version_tag" >> $GITHUB_OUTPUT
|
echo "VERSION_TAG=$version_tag" >> $GITHUB_OUTPUT
|
||||||
echo "COMMIT_COUNT=$commit_count"
|
echo "COMMIT_COUNT=$commit_count"
|
||||||
echo "COMMIT_COUNT=$commit_count" >> $GITHUB_OUTPUT
|
echo "COMMIT_COUNT=$commit_count" >> $GITHUB_OUTPUT
|
||||||
mv app/build/outputs/apk/standard/preview/app-standard-universal-preview-signed.apk Komikku-$version_tag-r$commit_count.apk
|
mv app/build/outputs/apk/standard/preview/app-standard-universal-preview-unsigned-signed.apk Komikku-$version_tag-r$commit_count.apk
|
||||||
|
|
||||||
- name: Upload APK
|
- name: Upload APK
|
||||||
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
|
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
|
||||||
|
|
|
||||||
10
.github/workflows/build_preview.yml
vendored
10
.github/workflows/build_preview.yml
vendored
|
|
@ -192,23 +192,23 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-universal-preview-signed.apk Komikku-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-universal-preview-unsigned-signed.apk Komikku-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||||
sha=`sha256sum Komikku-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
sha=`sha256sum Komikku-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
||||||
echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_OUTPUT
|
echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-arm64-v8a-preview-signed.apk Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-arm64-v8a-preview-unsigned-signed.apk Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||||
sha=`sha256sum Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
sha=`sha256sum Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
||||||
echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_OUTPUT
|
echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-armeabi-v7a-preview-signed.apk Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-armeabi-v7a-preview-unsigned-signed.apk Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||||
sha=`sha256sum Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
sha=`sha256sum Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
||||||
echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_OUTPUT
|
echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86-preview-signed.apk Komikku-x86-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86-preview-unsigned-signed.apk Komikku-x86-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||||
sha=`sha256sum Komikku-x86-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
sha=`sha256sum Komikku-x86-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
||||||
echo "APK_X86_SHA=$sha" >> $GITHUB_OUTPUT
|
echo "APK_X86_SHA=$sha" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86_64-preview-signed.apk Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86_64-preview-unsigned-signed.apk Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||||
sha=`sha256sum Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
sha=`sha256sum Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
||||||
echo "APK_X86_64_SHA=$sha" >> $GITHUB_OUTPUT
|
echo "APK_X86_64_SHA=$sha" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
|
|
||||||
31
.github/workflows/build_pull_request.yml
vendored
31
.github/workflows/build_pull_request.yml
vendored
|
|
@ -26,6 +26,8 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: Clone repo
|
- name: Clone repo
|
||||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Validate Gradle Wrapper
|
- name: Validate Gradle Wrapper
|
||||||
uses: gradle/actions/wrapper-validation@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2
|
uses: gradle/actions/wrapper-validation@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2
|
||||||
|
|
@ -62,3 +64,32 @@ jobs:
|
||||||
|
|
||||||
- name: Build app and run unit tests
|
- name: Build app and run unit tests
|
||||||
run: ./gradlew assembleStandardPreview testStandardPreviewUnitTest testReleaseUnitTest --stacktrace
|
run: ./gradlew assembleStandardPreview testStandardPreviewUnitTest testReleaseUnitTest --stacktrace
|
||||||
|
|
||||||
|
- name: Sign APK
|
||||||
|
uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1
|
||||||
|
with:
|
||||||
|
releaseDirectory: app/build/outputs/apk/standard/preview
|
||||||
|
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
||||||
|
alias: ${{ secrets.ALIAS }}
|
||||||
|
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||||
|
keyPassword: ${{ secrets.KEY_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Rename apk
|
||||||
|
id: current_commit
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
echo "The git ref is: ${{ github.ref }}"
|
||||||
|
version_tag=p$(echo ${{ github.ref }} | cut -d '/' -f 3)
|
||||||
|
commit_count=$(git rev-list --count HEAD)
|
||||||
|
echo "VERSION_TAG=$version_tag"
|
||||||
|
echo "VERSION_TAG=$version_tag" >> $GITHUB_OUTPUT
|
||||||
|
echo "COMMIT_COUNT=$commit_count"
|
||||||
|
echo "COMMIT_COUNT=$commit_count" >> $GITHUB_OUTPUT
|
||||||
|
mv app/build/outputs/apk/standard/preview/app-standard-universal-preview-unsigned-signed.apk Komikku-$version_tag-r$commit_count.apk
|
||||||
|
|
||||||
|
- name: Upload APK
|
||||||
|
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
|
||||||
|
with:
|
||||||
|
name: Komikku-${{ steps.current_commit.outputs.VERSION_TAG }}-r${{ steps.current_commit.outputs.COMMIT_COUNT }}.apk
|
||||||
|
path: ./*.apk
|
||||||
|
retention-days: 1
|
||||||
|
|
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -24,3 +24,4 @@ CHANGELOG.md
|
||||||
/captures
|
/captures
|
||||||
build.sh
|
build.sh
|
||||||
/app/src/main/assets/client_secrets.json
|
/app/src/main/assets/client_secrets.json
|
||||||
|
*.jks
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ import mihon.buildlogic.getBuildTime
|
||||||
import mihon.buildlogic.getCommitCount
|
import mihon.buildlogic.getCommitCount
|
||||||
import mihon.buildlogic.getGitSha
|
import mihon.buildlogic.getGitSha
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
import java.io.FileInputStream
|
||||||
|
import java.util.Properties
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("mihon.android.application")
|
id("mihon.android.application")
|
||||||
|
|
@ -53,6 +55,15 @@ android {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
signingConfigs {
|
||||||
|
create("preview") {
|
||||||
|
storeFile = rootProject.file(readPropertyFromLocalProperties("keystore") ?: "keystore.jks")
|
||||||
|
storePassword = readPropertyFromLocalProperties("storePassword")
|
||||||
|
keyAlias = readPropertyFromLocalProperties("keyAlias")
|
||||||
|
keyPassword = readPropertyFromLocalProperties("keyPassword")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
named("debug") {
|
named("debug") {
|
||||||
versionNameSuffix = "-${getCommitCount()}"
|
versionNameSuffix = "-${getCommitCount()}"
|
||||||
|
|
@ -78,8 +89,8 @@ android {
|
||||||
matchingFallbacks.add("release")
|
matchingFallbacks.add("release")
|
||||||
versionNameSuffix = "-${getCommitCount()}"
|
versionNameSuffix = "-${getCommitCount()}"
|
||||||
applicationIdSuffix = ".beta"
|
applicationIdSuffix = ".beta"
|
||||||
signingConfig = signingConfigs.getByName("debug")
|
|
||||||
}
|
}
|
||||||
|
// Profilers build, overwrite dev's signing configuration by 'debug' key then re-sign with GitHub's workflow
|
||||||
create("benchmark") {
|
create("benchmark") {
|
||||||
initWith(getByName("release"))
|
initWith(getByName("release"))
|
||||||
|
|
||||||
|
|
@ -100,6 +111,7 @@ android {
|
||||||
flavorDimensions.add("default")
|
flavorDimensions.add("default")
|
||||||
|
|
||||||
productFlavors {
|
productFlavors {
|
||||||
|
// Include Google service & build unsigned, for GitHub workflow build
|
||||||
create("standard") {
|
create("standard") {
|
||||||
buildConfigField("boolean", "INCLUDE_UPDATER", "true")
|
buildConfigField("boolean", "INCLUDE_UPDATER", "true")
|
||||||
dimension = "default"
|
dimension = "default"
|
||||||
|
|
@ -107,10 +119,13 @@ android {
|
||||||
create("fdroid") {
|
create("fdroid") {
|
||||||
dimension = "default"
|
dimension = "default"
|
||||||
}
|
}
|
||||||
|
// Signed, dev build with Android Studio if it's not a debug build
|
||||||
create("dev") {
|
create("dev") {
|
||||||
// Include pseudolocales: https://developer.android.com/guide/topics/resources/pseudolocales
|
// Include pseudolocales: https://developer.android.com/guide/topics/resources/pseudolocales
|
||||||
resourceConfigurations.addAll(listOf("en", "en_XA", "ar_XB", "xxhdpi"))
|
resourceConfigurations.addAll(listOf("en", "en_XA", "ar_XB", "xxhdpi"))
|
||||||
dimension = "default"
|
dimension = "default"
|
||||||
|
// Default signing for dev flavor, would be overridden by buildTypes config
|
||||||
|
signingConfig = signingConfigs.getByName("preview")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -344,3 +359,16 @@ buildscript {
|
||||||
classpath(kotlinx.gradle)
|
classpath(kotlinx.gradle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Config local store's signing key
|
||||||
|
fun readPropertyFromLocalProperties(propertyName: String): String? {
|
||||||
|
val localPropertiesFile = rootProject.file("local.properties")
|
||||||
|
if (localPropertiesFile.exists()) {
|
||||||
|
val properties = Properties()
|
||||||
|
FileInputStream(localPropertiesFile).use { inputStream ->
|
||||||
|
properties.load(inputStream)
|
||||||
|
}
|
||||||
|
return properties.getProperty(propertyName)
|
||||||
|
}
|
||||||
|
return null // Property not found
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue