This repository has been archived by the owner on Nov 18, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
139 lines (126 loc) · 4.23 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
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
image: gradle:7-jdk11
stages:
- build
- test
- visualize
default:
tags:
- shared
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
# ANDROID_COMPILE_SDK is the version of Android you're compiling with.
# It should match compileSdkVersion.
ANDROID_COMPILE_SDK: "30"
# ANDROID_BUILD_TOOLS is the version of the Android build tools you are using.
# It should match buildToolsVersion.
ANDROID_BUILD_TOOLS: "30.0.3"
# It's what version of the command line tools we're going to download from the official site.
# Official Site-> https://developer.android.com/studio/index.html
# There, look down below at the cli tools only, sdk tools package is of format:
# commandlinetools-os_type-ANDROID_SDK_TOOLS_latest.zip
# when the script was last modified for latest compileSdkVersion, it was which is written down below
ANDROID_SDK_TOOLS: "7583922"
.test:
only:
changes:
- pc/src/**/*
- pc/build.gradle
pc-build:
stage: build
before_script:
- cd pc
script: gradle --build-cache assemble
cache:
key: "$CI_COMMIT_REF_NAME"
policy: push
paths:
- pc/build
- pc/.gradle
only:
changes:
- pc/src/main/**/*
- pc/build.gradle
pc-test:
extends: .test
before_script:
- cd pc
stage: test
script:
- gradle test jacocoTestReport
- cat build/reports/jacoco/test/html/index.html | grep -o '<tfoot>.*</tfoot>'
artifacts:
when: always
paths:
- pc/build/test-results/test/TEST-*.xml
- pc/build/reports/
pc-coverage:
extends: .test
before_script:
- cd pc
stage: visualize
image: registry.gitlab.com/haynes/jacoco2cobertura:1.0.7
script:
# convert report from jacoco to cobertura, using relative project path
- python /opt/cover2cover.py build/reports/jacoco/test/jacocoTestReport.xml $CI_PROJECT_DIR/pc/src/main/java/ > build/cobertura.xml
needs: [ "pc-test" ]
artifacts:
reports:
cobertura: pc/build/cobertura.xml
.smartphone:
# Packages installation before running script
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
# Setup path as ANDROID_SDK_ROOT for moving/exporting the downloaded sdk into it
- export ANDROID_SDK_ROOT="${PWD}/android-home"
# Create a new directory at specified location
- install -d $ANDROID_SDK_ROOT
# Here we are installing androidSDK tools from official source,
# (the key thing here is the url from where you are downloading these sdk tool for command line, so please do note this
# url pattern there and here as well)
# after that unzipping those tools and
# then running a series of SDK manager commands to install necessary android SDK packages that'll allow the app to build
- wget --output-document=$ANDROID_SDK_ROOT/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip
# move to the archive at ANDROID_SDK_ROOT
- pushd $ANDROID_SDK_ROOT
- unzip -d cmdline-tools cmdline-tools.zip
- pushd cmdline-tools
# since commandline tools version 7583922 the root folder is named "cmdline-tools" so we rename it if necessary
- mv cmdline-tools tools || true
- popd
- popd
- export PATH=$PATH:${ANDROID_SDK_ROOT}/cmdline-tools/tools/bin/
# Nothing fancy here, just checking sdkManager version
- sdkmanager --version
# use yes to accept all licenses
- yes | sdkmanager --licenses || true
- sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}"
- sdkmanager "platform-tools"
- sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}"
- cd smartphone
- chmod +x ./gradlew
# Basic android and gradle stuff
# Check linting
smartphone-lintDebug:
extends: .smartphone
interruptible: true
stage: build
script:
- gradle -Pci --console=plain :app:lintDebug -PbuildDir=lint
# Make Project
smartphone-assembleDebug:
extends: .smartphone
interruptible: true
stage: build
script:
- gradle assembleDebug
artifacts:
paths:
- smartphone/app/build/outputs/
# Run all tests, if any fails, interrupt the pipeline(fail it)
smartphone-debugTests:
extends: .smartphone
interruptible: true
stage: test
script:
- gradle -Pci --console=plain :app:testDebug