Skip to content

Commit 4cdcf84

Browse files
Merge pull request #442 from dekusms/dev
Dev
2 parents 700570f + dbe4591 commit 4cdcf84

5 files changed

Lines changed: 140 additions & 52 deletions

File tree

.github/workflows/staging-version-bump.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
with:
3939
python-version: '3.x'
4040

41-
- name: Run bump_versions.py
41+
- name: Run bump_version.py
4242
id: bump
4343
run: |
4444
output=$(python bump_versions.py \
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
kotlin version: 2.3.0
2+
error message: The daemon has terminated unexpectedly on startup attempt #1 with exit code: 1. The daemon process output:
3+
1. Invalid maximum heap size: -Xmx512m -Xss1m
4+
2. Error: Could not create the Java Virtual Machine.
5+
3. Error: A fatal exception has occurred. Program will exit.
6+
The daemon didn't produce the message "Kotlin compile daemon is ready" during startup.
7+
8+
error message: The daemon has terminated unexpectedly on startup attempt #2 with exit code: 1. The daemon process output:
9+
1. Invalid maximum heap size: -Xmx512m -Xss1m
10+
2. Error: Could not create the Java Virtual Machine.
11+
3. Error: A fatal exception has occurred. Program will exit.
12+
Problems may have occurred during auto-selection of GC. The preferred GC is Parallel GC.
13+
If the problems persist, try adding the JVM option to the Kotlin daemon JVM arguments: -XX:-UseParallelGC.
14+
GC auto-selection logic is disabled temporary for the next daemon startup.
15+
The daemon didn't produce the message "Kotlin compile daemon is ready" during startup.
16+
17+
error message: The daemon has terminated unexpectedly on startup attempt #3 with exit code: 1. The daemon process output:
18+
1. Invalid maximum heap size: -Xmx512m -Xss1m
19+
2. Error: Could not create the Java Virtual Machine.
20+
3. Error: A fatal exception has occurred. Program will exit.
21+
The daemon didn't produce the message "Kotlin compile daemon is ready" during startup.
22+
23+
error message: Failed connecting to the daemon in 4 retries
24+
25+
error message: Daemon compilation failed: Could not connect to Kotlin compile daemon
26+
java.lang.RuntimeException: Could not connect to Kotlin compile daemon
27+
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:198)
28+
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:143)
29+
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:107)
30+
at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:75)
31+
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
32+
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
33+
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
34+
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
35+
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
36+
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
37+
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
38+
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:210)
39+
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:205)
40+
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:67)
41+
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:60)
42+
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:167)
43+
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:60)
44+
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:54)
45+
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
46+
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
47+
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174)
48+
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
49+
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194)
50+
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127)
51+
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169)
52+
at org.gradle.internal.Factories$1.create(Factories.java:31)
53+
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
54+
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
55+
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132)
56+
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
57+
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133)
58+
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
59+
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
60+
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
61+
at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)
62+
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
63+
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
64+
at java.base/java.lang.Thread.run(Thread.java:1583)
65+
66+

Dockerfile

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,32 @@
1-
FROM ubuntu:22.04 AS base
1+
FROM ubuntu:jammy-20230624@sha256:b060fffe8e1561c9c3e6dea6db487b900100fc26830b9ea2ec966c151ab4c020
22

3-
RUN apt update && apt install -y openjdk-17-jdk openjdk-17-jre android-sdk sdkmanager
3+
RUN apt update
4+
RUN apt install -y git openjdk-17-jdk unzip wget
45

56
WORKDIR /android
67

78
COPY . .
89

9-
ENV ANDROID_HOME "/usr/lib/android-sdk/"
10-
ENV PATH "${PATH}:${ANDROID_HOME}tools/:${ANDROID_HOME}platform-tools/"
11-
# ENV GRADLE_OPTS "-Xmx2048m"
12-
13-
RUN yes | sdkmanager --licenses
14-
15-
ENV PASS=""
16-
ENV MIN_SDK=""
17-
18-
# CMD ./gradlew assembleDebug
19-
FROM base as apk-builder
20-
CMD ./gradlew assembleRelease && \
21-
apksigner sign --ks app/keys/app-release-key.jks \
22-
--ks-pass pass:$PASS \
23-
--in app/build/outputs/apk/release/app-release-unsigned.apk \
24-
--out app/build/outputs/apk/release/app-release.apk
25-
26-
FROM base as bundle-builder
27-
CMD ./gradlew assemble bundleRelease && \
28-
apksigner sign --ks app/keys/app-release-key.jks \
29-
--ks-pass pass:$PASS \
30-
--in app/build/outputs/bundle/release/app-release.aab \
31-
--out app/build/outputs/bundle/release/app-bundle.aab \
32-
--min-sdk-version $MIN_SDK
33-
34-
# CMD cp app/build/outputs/apk/debug/app-debug.apk /apkbuilds/
35-
# CMD sha256sum app/build/outputs/apk/debug/app-debug.apk
10+
RUN apt update
11+
RUN apt install -y git openjdk-17-jdk unzip wget
12+
13+
ENV ANDROID_COMMAND_LINE_TOOLS_FILENAME commandlinetools-linux-10406996_latest.zip
14+
ENV ANDROID_API_LEVELS android-36
15+
ENV ANDROID_BUILD_TOOLS_VERSION 35.0.0
16+
17+
ENV ANDROID_HOME /usr/local/android-sdk-linux
18+
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/cmdline-tools/bin
19+
20+
RUN cd /usr/local/
21+
RUN wget -q "https://dl.google.com/android/repository/${ANDROID_COMMAND_LINE_TOOLS_FILENAME}"
22+
RUN unzip ${ANDROID_COMMAND_LINE_TOOLS_FILENAME} -d /usr/local/android-sdk-linux
23+
RUN rm ${ANDROID_COMMAND_LINE_TOOLS_FILENAME}
24+
25+
RUN yes | sdkmanager --update --sdk_root="${ANDROID_HOME}"
26+
RUN yes | sdkmanager --sdk_root="${ANDROID_HOME}" "platforms;${ANDROID_API_LEVELS}" "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" "extras;google;m2repository" "extras;android;m2repository" "extras;google;google_play_services" "ndk;28.0.13004108" "cmake;3.22.1"
27+
28+
RUN yes | sdkmanager --licenses --sdk_root="${ANDROID_HOME}"
29+
30+
RUN rm -rf ${ANDROID_HOME}/tools
31+
32+
RUN git config --global --add safe.directory /project

bump_version.py

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,7 @@
33
import sys
44
import requests
55

6-
def get_latest_tag():
7-
"""Get the latest tag from the repository."""
8-
url = "https://api.github.com/repos/dekusms/DekuSMS-Android/tags"
9-
response = requests.get(url)
10-
response.raise_for_status()
11-
12-
return response.json()[0]["name"]
13-
14-
def bump_version(filename, flavour):
6+
def bump_version(tagVersion, filename, flavour):
157
"""
168
Bumps the version number in the specified file.
179
@@ -28,7 +20,6 @@ def bump_version(filename, flavour):
2820
releaseVersion = None
2921
stagingVersion = None
3022
nightlyVersion = None
31-
tagVersion = get_latest_tag()
3223

3324
for line in lines:
3425
if line.startswith("releaseVersion="):
@@ -71,20 +62,17 @@ def bump_version(filename, flavour):
7162

7263
tagVersion = int(tagVersion) + 1
7364

74-
with open(filename, "w") as f:
75-
f.write("releaseVersion=" + str(releaseVersion) + "\n")
76-
f.write("stagingVersion=" + str(stagingVersion) + "\n")
77-
f.write("nightlyVersion=" + str(nightlyVersion) + "\n")
78-
f.write(f"versionName={str(releaseVersion)}.{str(stagingVersion)}.{str(nightlyVersion)}\n")
79-
f.write("tagVersion=" + str(tagVersion))
80-
81-
return releaseVersion, stagingVersion, nightlyVersion, tagVersion
65+
return f"""releaseVersion={str(releaseVersion)}
66+
stagingVersion={str(stagingVersion)}
67+
nightlyVersion={str(nightlyVersion)}
68+
versionName={str(releaseVersion)}.{str(stagingVersion)}.{str(nightlyVersion)}
69+
tagVersion={str(tagVersion)}"""
8270

8371

8472
if __name__ == "__main__":
8573
filename = "version.properties"
8674

87-
flavour = sys.argv[1]
88-
releaseVersion, stagingVersion, nightlyVersion, tagVersion = bump_version(filename, flavour)
89-
print("+ successful version bump: ",
90-
releaseVersion, stagingVersion, nightlyVersion, tagVersion)
75+
tag = sys.argv[1]
76+
flavour = sys.argv[2]
77+
version = bump_version(tag, filename, flavour)
78+
print(version)

docker_build.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/bin/bash
2+
3+
set -eou pipefail
4+
5+
image_name=deku_rep_build_release
6+
7+
docker build -t deku_rep_build_release .
8+
9+
docker run --rm -v "$(pwd)":/project -w /project --user "$(id -u):$(id -g)" $image_name \
10+
./gradlew assembleRelease \
11+
--no-daemon \
12+
--max-workers=2 \
13+
--console=plain \
14+
-Dorg.gradle.jvmargs="-Xmx1024m -Xms256m -XX:MaxMetaspaceSize=384m -Dfile.encoding=UTF-8" \
15+
-Dkotlin.daemon.jvm.options="-Xmx512m,-Xss1m" \
16+
-Dkotlin.compiler.execution.strategy=in-process
17+
sha1=$( sha256sum app/build/outputs/apk/release/app-release-unsigned.apk )
18+
rm app/build/outputs/apk/release/app-release-unsigned.apk
19+
20+
docker run --rm -v "$(pwd)":/project -w /project --user "$(id -u):$(id -g)" $image_name \
21+
./gradlew assembleRelease \
22+
--no-daemon \
23+
--max-workers=2 \
24+
--console=plain \
25+
-Dorg.gradle.jvmargs="-Xmx1024m -Xms256m -XX:MaxMetaspaceSize=384m -Dfile.encoding=UTF-8" \
26+
-Dkotlin.daemon.jvm.options="-Xmx512m,-Xss1m" \
27+
-Dkotlin.compiler.execution.strategy=in-process
28+
29+
sha2=$( sha256sum app/build/outputs/apk/release/app-release-unsigned.apk )
30+
echo "$sha1"
31+
echo "$sha1"
32+
33+
if [ "$sha1" eq "$sha2" ]; then
34+
echo "All good! Reproducible"
35+
else
36+
echo "Not reproducible..."
37+
fi

0 commit comments

Comments
 (0)