1+ name : Android CI
2+
3+ on :
4+ push :
5+ branches : [ main, develop ]
6+ pull_request :
7+ branches : [ main, develop ]
8+
9+ jobs :
10+ build :
11+ runs-on : ubuntu-latest
12+
13+ steps :
14+ - name : Checkout code
15+ uses : actions/checkout@v4
16+
17+ - name : Set up JDK 17
18+ uses : actions/setup-java@v4
19+ with :
20+ java-version : ' 17'
21+ distribution : ' temurin'
22+
23+ - name : Cache Gradle packages
24+ uses : actions/cache@v4
25+ with :
26+ path : |
27+ ~/.gradle/caches
28+ ~/.gradle/wrapper
29+ key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
30+ restore-keys : |
31+ ${{ runner.os }}-gradle-
32+
33+ - name : Grant execute permission for gradlew
34+ run : chmod +x gradlew
35+
36+ - name : Build project
37+ run : ./gradlew assembleDebug assembleDebugUnitTest
38+
39+ gradle :
40+ runs-on : ubuntu-latest
41+ if : ${{ !contains(github.event.head_commit.message, 'ci skip') }}
42+
43+ steps :
44+ - name : Checkout Repo
45+ uses : actions/checkout@v4
46+
47+ - name : Setup Java
48+ uses : actions/setup-java@v4
49+ with :
50+ java-version : ' 17'
51+ distribution : ' temurin'
52+
53+ - name : Setup Gradle
54+ uses : gradle/actions/setup-gradle@v4
55+
56+ - name : Run Gradle
57+ run : ./gradlew build publishToMavenLocal --continue
58+
59+ detekt :
60+ runs-on : ubuntu-latest
61+ needs : build
62+
63+ steps :
64+ - name : Checkout code
65+ uses : actions/checkout@v4
66+
67+ - name : Set up JDK 17
68+ uses : actions/setup-java@v4
69+ with :
70+ java-version : ' 17'
71+ distribution : ' temurin'
72+
73+ - name : Cache Gradle packages
74+ uses : actions/cache@v4
75+ with :
76+ path : |
77+ ~/.gradle/caches
78+ ~/.gradle/wrapper
79+ key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
80+ restore-keys : |
81+ ${{ runner.os }}-gradle-
82+
83+ - name : Grant execute permission for gradlew
84+ run : chmod +x gradlew
85+
86+ - name : Run Detekt
87+ run : ./gradlew detekt
88+
89+ - name : Upload Detekt reports
90+ uses : actions/upload-artifact@v4
91+ if : always()
92+ with :
93+ name : detekt-reports
94+ path : app/build/reports/detekt/
95+
96+ test :
97+ runs-on : ubuntu-latest
98+ needs : build
99+
100+ steps :
101+ - name : Checkout code
102+ uses : actions/checkout@v4
103+
104+ - name : Set up JDK 17
105+ uses : actions/setup-java@v4
106+ with :
107+ java-version : ' 17'
108+ distribution : ' temurin'
109+
110+ - name : Cache Gradle packages
111+ uses : actions/cache@v4
112+ with :
113+ path : |
114+ ~/.gradle/caches
115+ ~/.gradle/wrapper
116+ key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
117+ restore-keys : |
118+ ${{ runner.os }}-gradle-
119+
120+ - name : Grant execute permission for gradlew
121+ run : chmod +x gradlew
122+
123+ - name : Run unit tests
124+ run : ./gradlew testDebugUnitTest
125+
126+ - name : Upload test results
127+ uses : actions/upload-artifact@v4
128+ if : always()
129+ with :
130+ name : test-results
131+ path : |
132+ app/build/test-results/testDebugUnitTest/
133+ app/build/reports/tests/testDebugUnitTest/
0 commit comments