1version: 2
2
3jobs:
4 core:
5 docker:
6 - image: rust:1
7
8 steps:
9 - checkout
10
11 - restore_cache:
12 key: target-cache
13
14 - run: rustc --version; cargo --version; rustup --version
15 - run: rustup component add rustfmt
16 - run: rustup component add clippy
17 - run: cargo fmt -- --check
18 - run: cargo test
19 - run: cargo clippy
20 - run: cargo bench
21
22 - save_cache:
23 key: target-cache
24 paths:
25 - ~/.cargo
26 - ./target
27
28 android:
29 docker:
30 - image: circleci/android:api-28
31
32 environment:
33 _JAVA_OPTIONS: "-Xmx3200m -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:ParallelGCThreads=2 -XX:ConcGCThreads=2 -XX:ParallelGCThreads=2 -Djava.util.concurrent.ForkJoinPool.common.parallelism=2"
34
35 steps:
36 - checkout
37
38 - restore_cache:
39 key: jars-{{ checksum "bindings/kotlin/build.gradle" }}-{{ checksum "bindings/kotlin/stretch/build.gradle" }}
40
41 - run: curl https://sh.rustup.rs -sSf | sh -s -- -y
42 - run: yes | sdkmanager --update || true
43 - run: cd bindings/kotlin && ./gradlew androidDependencies --no-daemon --max-workers 2
44
45 - save_cache:
46 paths:
47 - bindings/kotlin/.gradle
48 key: jars-{{ checksum "bindings/kotlin/build.gradle" }}-{{ checksum "bindings/kotlin/stretch/build.gradle" }}
49
50 - run:
51 name: Setup emulator
52 command: sdkmanager "system-images;android-24;default;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-24;default;armeabi-v7a"
53
54 - run:
55 name: Launch emulator
56 command: export LD_LIBRARY_PATH=${ANDROID_HOME}/emulator/lib64:${ANDROID_HOME}/emulator/lib64/qt/lib && emulator64-arm -avd test -noaudio -no-boot-anim -no-window -gpu off
57
58 - run:
59 name: Run tests
60 command: cd bindings/kotlin && ./gradlew connectedAndroidTest
61
62 - store_artifacts:
63 path: bindings/kotlin/stretch/build/test-results
64 destination: reports
65
66 - store_test_results:
67 path: bindings/kotlin/stretch/build/test-results
68
69workflows:
70 version: 2
71 test_all:
72 jobs:
73 - android
74 - core