mirror of
https://github.com/SlimeVR/SlimeVR-Server.git
synced 2026-04-06 02:01:58 +02:00
Build and sign release APK (#1653)
This commit is contained in:
19
.github/workflows/gradle.yaml
vendored
19
.github/workflows/gradle.yaml
vendored
@@ -65,7 +65,7 @@ jobs:
|
||||
uses: gradle/actions/setup-gradle@v5
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew shadowJar
|
||||
run: ./gradlew :server:desktop:shadowJar
|
||||
|
||||
- name: Upload the Server JAR as a Build Artifact
|
||||
uses: actions/upload-artifact@v5
|
||||
@@ -113,13 +113,24 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: pnpm i
|
||||
|
||||
- name: Build
|
||||
- name: Build GUI
|
||||
env:
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
run: cd gui && pnpm run build
|
||||
|
||||
- name: Decode keystore secret to file
|
||||
env:
|
||||
ANDROID_STORE_FILE: ${{ secrets.ANDROID_STORE_FILE }}
|
||||
run: |
|
||||
mkdir -p server/android/secrets/
|
||||
echo $ANDROID_STORE_FILE | base64 --decode > server/android/secrets/keystore.jks
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew :server:android:assembleDebug
|
||||
run: ./gradlew :server:android:build
|
||||
env:
|
||||
ANDROID_STORE_PASSWD: ${{ secrets.ANDROID_STORE_PASSWD }}
|
||||
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
|
||||
ANDROID_KEY_PASSWD: ${{ secrets.ANDROID_KEY_PASSWD }}
|
||||
|
||||
- name: Upload the Android Build Artifact
|
||||
uses: actions/upload-artifact@v5
|
||||
@@ -132,7 +143,7 @@ jobs:
|
||||
- name: Prepare for release
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
run: |
|
||||
cp server/android/build/outputs/apk/debug/android-debug.apk ./SlimeVR-android.apk
|
||||
cp server/android/build/outputs/apk/release/android-release.apk ./SlimeVR-android.apk
|
||||
|
||||
- name: Upload to draft release
|
||||
uses: softprops/action-gh-release@v2
|
||||
|
||||
1
server/android/.gitignore
vendored
1
server/android/.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
/build
|
||||
/src/main/resources/web-gui
|
||||
/secrets
|
||||
|
||||
@@ -37,8 +37,17 @@ tasks.register<Copy>("copyGuiAssets") {
|
||||
throw GradleException("You need to run \"pnpm run build\" on the gui folder first!")
|
||||
}
|
||||
}
|
||||
tasks.register("validateKeyStore") {
|
||||
val storeFile = android.buildTypes.getByName("release").signingConfig?.storeFile
|
||||
// Only warn for now since this is run even when irrelevant
|
||||
if (storeFile?.isFile != true) {
|
||||
logger.error("Android KeyStore file does not exist or is not a file: ${storeFile?.path}")
|
||||
} else if (storeFile.length() <= 0) {
|
||||
logger.error("Android KeyStore file is empty: ${storeFile.path}")
|
||||
}
|
||||
}
|
||||
tasks.preBuild {
|
||||
dependsOn(":server:android:copyGuiAssets")
|
||||
dependsOn(":server:android:copyGuiAssets", ":server:android:validateKeyStore")
|
||||
}
|
||||
|
||||
tasks.withType<KotlinCompile> {
|
||||
@@ -134,6 +143,15 @@ android {
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
create("release") {
|
||||
storeFile = file("./secrets/keystore.jks")
|
||||
storePassword = System.getenv("ANDROID_STORE_PASSWD")
|
||||
keyAlias = System.getenv("ANDROID_KEY_ALIAS")
|
||||
keyPassword = System.getenv("ANDROID_KEY_PASSWD")
|
||||
}
|
||||
}
|
||||
|
||||
/* The buildTypes block is where you can configure multiple build types.
|
||||
By default, the build system defines two build types: debug and release. The
|
||||
debug build type is not explicitly shown in the default build configuration,
|
||||
@@ -152,6 +170,7 @@ android {
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro",
|
||||
)
|
||||
signingConfig = signingConfigs.getByName("release")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user