-
Notifications
You must be signed in to change notification settings - Fork 172
150 lines (132 loc) · 7.17 KB
/
nightly-android.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
name: Nightly build Android
on:
push:
jobs:
build:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
path: 'gh-clone/simutrans'
- name: Install dependencies
run: |
sudo dpkg --add-architecture i386
sudo apt-get -yqq update
sudo apt-get -ym install curl expect git libc6:i386 libgcc1:i386 libncurses6:i386 libstdc++6:i386 zlib1g:i386 openjdk-17-jdk wget unzip vim make subversion zip
- name: Setup Android SDK environment variables
run: |
echo "ANDROID_HOME=/opt/android-sdk-linux" >> $GITHUB_ENV
echo "ANDROID_SDK_HOME=/opt/android-sdk-linux" >> $GITHUB_ENV
echo "ANDROID_SDK_ROOT=/opt/android-sdk-linux" >> $GITHUB_ENV
echo "ANDROID_SDK=/opt/android-sdk-linux" >> $GITHUB_ENV
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" >> $GITHUB_ENV
- name: Create working directory for next steps
run: |
sudo mkdir /opt/android-sdk-linux
sudo mkdir /android-sdl
sudo chown -R runner /opt/android-sdk-linux
sudo chgrp -R docker /opt/android-sdk-linux
sudo chown -R runner /android-sdl
sudo chgrp -R docker /android-sdl
- name: Install Android SDK tools
working-directory: /opt/android-sdk-linux
run: |
wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip
unzip commandlinetools-linux-7583922_latest.zip
rm commandlinetools-linux-7583922_latest.zip
mv cmdline-tools latest
mkdir cmdline-tools
mv latest cmdline-tools/latest
echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> $GITHUB_PATH
- name: Install Android SDK dependencies
working-directory: /opt/android-sdk-linux
run: |
yes | sdkmanager --licenses
yes | sdkmanager --install "platform-tools"
echo "$ANDROID_HOME/platform-tools" >> $GITHUB_PATH
yes | sdkmanager --install "build-tools;34.0.0"
echo "$ANDROID_HOME/build-tools/34.0.0" >> $GITHUB_PATH
yes | sdkmanager --install "cmake;3.22.1"
echo "$ANDROID_HOME/cmake/3.22.1/bin" >> $GITHUB_PATH
yes | sdkmanager --install "ndk;25.1.8937393"
echo "$ANDROID_HOME/ndk/25.1.8937393" >> $GITHUB_PATH
echo "$ANDROID_HOME/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/bin/" >> $GITHUB_PATH
ln -s llvm-objdump ${ANDROID_HOME}/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/bin/objdump
- name: Install keystore for Android APK signing
run: |
mkdir /home/runner/.android/
keytool -genkey -v -keystore /home/runner/.android/debug.keystore -alias androiddebugkey -keyalg RSA -keysize 2048 -validity 10000 -keypass android -storepass android -dname "cn=example.com,ou=exampleou,dc=example,dc=com"
- name: Set up android project
working-directory: /android-sdl
run: |
git clone --depth 1 https://github.com/simutrans/simutrans-android-project
cd simutrans-android-project
git submodule init
git submodule update --depth 1
cp -r $GITHUB_WORKSPACE/gh-clone/simutrans simutrans/jni/simutrans
cp -r simutrans/jni/SDL/android-project/app/src/main/java simutrans/src/main
cd simutrans/jni
./simutrans/src/android/AndroidPreBuild.sh
cp -rf simutrans/simutrans/. ../src/main/assets
- name: Build libraries
working-directory: /android-sdl/simutrans-android-project/simutrans/jni
run: |
./build_libraries.sh
# Fluidsynth is a PITA to build; using the prebuilt release instead
wget https://github.com/FluidSynth/fluidsynth/releases/download/v2.3.5/fluidsynth-2.3.5-android24.zip
unzip fluidsynth-*.zip -d fluidsynth
- name: Build Simutrans
env:
SIGNING_KEYSTORE: /android-sdl/simutrans-android-project/simutrans/jni/simutrans/src/android/Simutrans-upload.keystore
SIGNING_KEY_ALIAS: ${{ secrets.ANDROID_UPLOAD_KEYSTORE_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.ANDROID_UPLOAD_KEYSTORE_PASS }}
SIGNING_STORE_PASSWORD: ${{ secrets.ANDROID_UPLOAD_KEYSTORE_PASS }}
working-directory: gh-clone/simutrans
run: |
echo "action_state=yellow" >> $GITHUB_ENV
sed -i "s/versionCode [0-9]\+/versionCode $(./tools/get_revision.sh)/" /android-sdl/simutrans-android-project/simutrans/build.gradle
VERSION=`sed -n 's/#define SIM_VERSION_MAJOR *\([0-9]*\)$/\1/ p' <src/simutrans/simversion.h`.`sed -n 's/#define SIM_VERSION_MINOR *\([0-9]*\)$/\1/ p' <src/simutrans/simversion.h`.`sed -n 's/#define SIM_VERSION_PATCH *\([0-9]*\)$/\1/ p' <src/simutrans/simversion.h`
NIGHTLY=`sed -n 's/#define SIM_VERSION_BUILD SIM_BUILD_NIGHTLY/ Nightly/ p' <src/simutrans/simversion.h``sed -n 's/#define SIM_VERSION_BUILD SIM_BUILD_RELEASE_CANDIDATE/ Release candidate/ p' <src/simutrans/simversion.h`
sed -i 's/versionName.*$/versionName "'"$VERSION$NIGHTLY"'"/' /android-sdl/simutrans-android-project/simutrans/build.gradle
cd /android-sdl/simutrans-android-project
cat simutrans/build.gradle
./gradlew assembleRelease
./gradlew bundleRelease
cd /android-sdl/simutrans-android-project/simutrans/build/outputs/bundle/release
jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore $SIGNING_KEYSTORE -storepass $SIGNING_STORE_PASSWORD simutrans-release.aab $SIGNING_KEY_ALIAS
wget https://github.com/google/bundletool/releases/download/1.15.2/bundletool-all-1.15.2.jar
chmod 775 bundletool-all-1.15.2.jar
java -jar bundletool-all-1.15.2.jar build-apks --bundle=simutrans-release.aab --output=temp.apks --mode=universal
rm -rf bundletool-all-1.15.2.jar
unzip temp.apks
rm -rf temp.apks toc.pb
mv universal.apk simutrans-nightly.apk
mkdir whatsNewDirectory
echo `cd $GITHUB_WORKSPACE/gh-clone/simutrans && git log --pretty=format:'%s' -1` > whatsNewDirectory/whatsnew-en-US
- name: Update binaries of Nightly Release aab
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: /android-sdl/simutrans-android-project/simutrans/build/outputs/bundle/release/simutrans-release.aab
asset_name: simuandroid-nightly.aab
tag: Nightly
overwrite: true
- name: Update binaries of Nightly Release apk
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: /android-sdl/simutrans-android-project/simutrans/build/outputs/bundle/release/simutrans-nightly.apk
asset_name: simuandroid-nightly.apk
tag: Nightly
overwrite: true
- name: Release Beta on Google Play Store
uses: r0adkll/upload-google-play@v1
if: github.repository == 'simutrans/simutrans'
with:
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
packageName: com.simutrans
releaseFiles: /android-sdl/simutrans-android-project/simutrans/build/outputs/bundle/release/simutrans-release.aab
track: beta
status: completed
whatsNewDirectory: /android-sdl/simutrans-android-project/simutrans/build/outputs/bundle/release/whatsNewDirectory