Skip to content

Commit 309b9d5

Browse files
authored
Merge pull request #3 from vaslabs-ltd/jetsnack
Jetsnack + Reworked actions
2 parents 4af57a8 + bda22df commit 309b9d5

File tree

4 files changed

+137
-33
lines changed

4 files changed

+137
-33
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
runs:
2+
using: "composite"
3+
steps:
4+
- name: Set Env variables
5+
run: |
6+
echo "ANDROID_HOME=$HOME/.android/sdk" >> $GITHUB_ENV
7+
echo "ANDROID_SDK_ROOT=$HOME/.android/sdk" >> $GITHUB_ENV
8+
echo "ANDROID_USER_HOME=$HOME/.android/" >> $GITHUB_ENV
9+
shell: bash
10+
11+
- name: Enable KVM group perms
12+
run: |
13+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
14+
sudo udevadm control --reload-rules
15+
sudo udevadm trigger --name-match=kvm
16+
shell: bash
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
inputs:
2+
app-name:
3+
description: 'The name of the Android app to test, e.g., JetNews or JetLagged'
4+
required: true
5+
6+
runs:
7+
using: "composite"
8+
steps:
9+
- name: Run instrumentation tests
10+
run: |
11+
./mill show ${{ inputs.app-name }}.app.androidApk
12+
./mill show ${{ inputs.app-name }}.app.createAndroidVirtualDevice
13+
./mill --debug show ${{ inputs.app-name }}.app.startAndroidEmulator
14+
./mill show ${{ inputs.app-name }}.app.androidTest
15+
./mill show ${{ inputs.app-name }}.app.stopAndroidEmulator
16+
shell: bash

.github/workflows/Test.yaml

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,37 @@
1-
name: Test All
1+
name: Test Apps
22

33
on:
44
push:
55
branches:
66
- main
7+
pull_request:
78

89
jobs:
910
androidTest:
1011
runs-on: ubuntu-latest
1112
timeout-minutes: 30
12-
1313
steps:
14-
- name: Checkout
15-
uses: actions/checkout@v5
16-
- name: Set Env variables
17-
run: |
18-
echo "ANDROID_HOME=$HOME/.android/sdk" >> $GITHUB_ENV
19-
echo "ANDROID_SDK_ROOT=$HOME/.android/sdk" >> $GITHUB_ENV
20-
echo "ANDROID_USER_HOME=$HOME/.android/" >> $GITHUB_ENV
21-
shell: bash
22-
- name: Enable KVM group perms
23-
run: |
24-
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
25-
sudo udevadm control --reload-rules
26-
sudo udevadm trigger --name-match=kvm
27-
28-
- name: Set up JDK 17
29-
uses: actions/setup-java@v5
14+
- uses: coursier/cache-action@v6
15+
- uses: actions/checkout@v4
16+
- uses: ./.github/actions/android-setup
17+
- uses: ./.github/actions/mill-android-test
18+
with:
19+
app-name: JetLagged
20+
- uses: ./.github/actions/mill-android-test
3021
with:
31-
java-version: 17
32-
distribution: 'zulu'
22+
app-name: JetNews
23+
- uses: ./.github/actions/mill-android-test
24+
with:
25+
app-name: Jetsnack
26+
- name: Publish Test Report
27+
uses: mikepenz/action-junit-report@v5
28+
if: (!cancelled())
29+
with:
30+
fail_on_failure: false
31+
include_passed: false
32+
detailed_summary: true
33+
annotate_only: true
34+
require_tests: false
35+
report_paths: 'out/**/test-report.xml'
3336

34-
- name: Run instrumentation tests
35-
run: |
36-
./mill show JetNews.app.androidApk
37-
./mill show JetNews.app.createAndroidVirtualDevice
38-
./mill --debug show JetNews.app.startAndroidEmulator
39-
./mill show JetNews.app.androidTest
40-
./mill show JetNews.app.stopAndroidEmulator
41-
shell: bash
4237

43-
- name: Upload test reports
44-
uses: actions/upload-artifact@v4
45-
with:
46-
name: test-reports-jetnews
47-
path: out/JetNews/app/androidTest/testForked.dest/test-report.xml

Jetsnack/package.mill

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package build.Jetsnack
2+
3+
import mill.*
4+
import androidlib.*
5+
import kotlinlib.*
6+
import build.*
7+
import mill.javalib.Dep
8+
9+
object app extends BaseAndroidModule, AndroidR8AppModule {
10+
11+
override def androidEnableCompose: T[Boolean] = Task { true }
12+
13+
override def kotlinUseEmbeddableCompiler: T[Boolean] = true
14+
15+
def androidProjectProguardFiles = Task.Sources(
16+
"proguard-rules.pro"
17+
)
18+
19+
override def androidApplicationNamespace: String = "com.example.jetsnack"
20+
21+
override def androidApplicationId: String = "com.example.jetsnack"
22+
23+
override def bomMvnDeps: T[Seq[Dep]] = super.bomMvnDeps() ++ Seq(
24+
mvn"androidx.compose:compose-bom:2025.08.00"
25+
)
26+
27+
override def mvnDeps: T[Seq[Dep]] = super.mvnDeps() ++ Seq(
28+
mvn"org.jetbrains.kotlin:kotlin-stdlib-jdk8:${build.Versions.kotlinVersion}",
29+
mvn"org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2",
30+
mvn"androidx.core:core-ktx:1.17.0",
31+
mvn"androidx.activity:activity-compose:1.10.1",
32+
mvn"androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.2",
33+
mvn"androidx.lifecycle:lifecycle-viewmodel-compose:2.9.3",
34+
mvn"androidx.lifecycle:lifecycle-runtime-compose:2.9.3",
35+
mvn"androidx.navigation:navigation-compose:2.9.2",
36+
mvn"androidx.constraintlayout:constraintlayout-compose:1.1.1",
37+
mvn"androidx.compose.runtime:runtime",
38+
mvn"androidx.compose.foundation:foundation",
39+
mvn"androidx.compose.foundation:foundation-layout",
40+
mvn"androidx.compose.ui:ui",
41+
mvn"androidx.compose.ui:ui-util",
42+
mvn"androidx.compose.material3:material3",
43+
mvn"androidx.compose.animation:animation",
44+
mvn"androidx.compose.material:material-icons-extended",
45+
mvn"androidx.compose.ui:ui-tooling-preview",
46+
mvn"io.coil-kt:coil-compose:2.7.0",
47+
mvn"androidx.compose.ui:ui-tooling",
48+
mvn"androidx.glance:glance-appwidget:1.2.0-alpha01",
49+
mvn"androidx.glance:glance-preview:1.1.1",
50+
mvn"androidx.savedstate:savedstate-ktx:1.3.1"
51+
)
52+
53+
object androidTest extends AndroidAppKotlinInstrumentedTests, AndroidR8AppModule {
54+
55+
override def androidEnableCompose: T[Boolean] = Task {
56+
true
57+
}
58+
59+
override def kotlinUseEmbeddableCompiler: T[Boolean] = true
60+
61+
override def androidR8Args: T[Seq[String]] = super.androidR8Args() ++ Seq(
62+
"--map-diagnostics", "error", "warning"
63+
)
64+
65+
override def bomMvnDeps: T[Seq[Dep]] = super.bomMvnDeps() ++ Seq(
66+
mvn"androidx.compose:compose-bom:2025.08.00"
67+
)
68+
69+
override def mvnDeps: T[Seq[Dep]] = super.mvnDeps() ++ Seq(
70+
mvn"junit:junit:4.13.2",
71+
mvn"androidx.test:core:1.7.0",
72+
mvn"androidx.test.ext:junit:1.3.0",
73+
mvn"androidx.test:runner:1.7.0",
74+
mvn"androidx.test.espresso:espresso-core:3.7.0",
75+
mvn"androidx.test:rules:1.7.0",
76+
mvn"org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2",
77+
mvn"androidx.compose.ui:ui-test",
78+
mvn"androidx.compose.ui:ui-test-junit4",
79+
)
80+
81+
}
82+
}

0 commit comments

Comments
 (0)