-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
103 lines (85 loc) · 2.78 KB
/
.gitlab-ci.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
# yaml-language-server: $schema=https://json.schemastore.org/gitlab-ci
image: openjdk:11-jdk
variables:
ANDROID_COMPILE_SDK: "31"
ANDROID_TEST_SDK: "24"
ANDROID_SDK_TOOLS: "8092744"
ANDROID_COMPILE_NDK: "22.1.7171670"
GIT_STRATEGY: fetch
GIT_SUBMODULE_STRATEGY: recursive
GOOGLE_PUBLISH_JSON: app/misc/android-publisher-account.json
.configure_android_sdk: &configure_android_sdk
# download android cmdline tools
- mkdir -pv android-sdk-linux/cmdline-tools/
- wget --quiet --output-document=android-cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip
- unzip -q android-cmdline-tools.zip && rm -v android-cmdline-tools.zip
- mv -v cmdline-tools/ android-sdk-linux/cmdline-tools/latest/
# set environment variables
- export ANDROID_HOME="$PWD/android-sdk-linux"
- export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools"
- export NDK_HOME=$ANDROID_HOME/ndk/$ANDROID_COMPILE_NDK
# install required components
- echo y | sdkmanager --install "ndk;${ANDROID_COMPILE_NDK}" > /dev/null
.configure_gradle: &configure_gradle
- export GRADLE_USER_HOME=$PWD/.gradle
- chmod +x ./gradlew
.install_rust_toolchain: &install_rust_toolchain
- apt-get --quiet install gcc --yes
- curl -sSf https://sh.rustup.rs | sh -s -- -y
- source $HOME/.cargo/env
- rustup target add armv7-linux-androideabi
- rustup target add aarch64-linux-android
- rustup target add i686-linux-android
- rustup target add x86_64-linux-android
.compile_html2md: &compile_html2md |
cd $CI_PROJECT_DIR
./html2md-build.sh
.decrypt_release_account: &decrypt_publish_json |
apt-get --quiet install gnupg2 --yes
gpg --batch --decrypt --output ${GOOGLE_PUBLISH_JSON} --passphrase ${GOOGLE_ACCOUNT_DECRYPTION_KEY} ${GOOGLE_PUBLISH_JSON}.gpg
before_script:
- apt-get --quiet update --yes
- *configure_android_sdk
- *configure_gradle
cache:
paths:
# gradle cache
- .gradle/caches/
- .gradle/wrapper/
# rust compiled deps
- html2md/target
- html2md/.cargo/registry
stages:
- test
- release
release-alpha:
stage: release
except:
- merge_requests
- tags
script:
- *decrypt_publish_json
- *install_rust_toolchain
- *compile_html2md
- ./gradlew app:publishGoogleplayReleaseApk -PgplayReleaseType=alpha
after_script:
- rm -f ${GOOGLE_PUBLISH_JSON}
artifacts:
paths:
- app/build/outputs/apk
release-gold:
stage: release
except:
- merge_requests
only:
- tags
script:
- *decrypt_publish_json
- *install_rust_toolchain
- *compile_html2md
- ./gradlew app:publishGoogleplayReleaseApk -PgplayReleaseType=production
after_script:
- rm -f ${GOOGLE_PUBLISH_JSON}
artifacts:
paths:
- app/build/outputs/apk