1
0
mirror of https://github.com/wulkanowy/wulkanowy.git synced 2024-11-23 18:46:24 -06:00
wulkanowy-mirror/.circleci/config.yml
2017-11-26 16:32:33 +01:00

199 lines
6.1 KiB
YAML

version: 2
references:
workspace_root: &workspace_root
~/wulkanowy
container_config: &container_config
docker:
- image: circleci/android:api-27-alpha
working_directory: *workspace_root
environment:
environment:
JVM_OPTS: -Xmx3200m
attach_workspace: &attach_workspace
attach_workspace:
at: *workspace_root
general_cache_key: &general_cache_key
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
jobs:
build:
<<: *container_config
steps:
- checkout
- restore_cache:
<<: *general_cache_key
- run:
name: Setup environment
command: ./gradlew dependencies --no-daemon --stacktrace --console=plain -PdisablePreDex || true
- run:
name: Initial build
command: ./gradlew -x test -x lint build assembleDebug --no-daemon --stacktrace --console=plain -PdisablePreDex
- store_artifacts:
path: ./app/build/outputs/apk/
destination: apks/
- persist_to_workspace:
root: *workspace_root
paths:
- .
- save_cache:
<<: *general_cache_key
paths:
- "~/.gradle"
lint:
<<: *container_config
steps:
- *attach_workspace
- restore_cache:
<<: *general_cache_key
- run:
name: Run lint
command: ./gradlew lint --no-daemon --stacktrace --console=plain -PdisablePreDex
- store_artifacts:
path: ./app/build/reports/
destination: lint_reports/app/
- store_test_results:
path: ./app/build/reports/
- persist_to_workspace:
root: *workspace_root
paths:
- "./app/build/reports/lint-results.xml"
app-test:
<<: *container_config
steps:
- *attach_workspace
- restore_cache:
<<: *general_cache_key
- run:
name: Run app tests
command: ./gradlew :app:test :app:jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Upload unit code coverage to codecov
command: bash <(curl -s https://codecov.io/bash) -F app
- store_artifacts:
path: ./app/build/reports/tests/
destination: tests_reports/
- store_artifacts:
path: ./app/build/reports/jacoco/jacocoTestDebugUnitTestReport/
destination: coverage_reports/
- store_test_results:
path: ./app/build/test-results
- persist_to_workspace:
root: *workspace_root
paths:
- "./app/build/jacoco"
api-test:
<<: *container_config
steps:
- *attach_workspace
- restore_cache:
<<: *general_cache_key
- run:
name: Run api tests
command: ./gradlew :api:test :api:jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Upload code coverage to codecov
command: bash <(curl -s https://codecov.io/bash) -F api
- store_artifacts:
path: ./api/build/reports/tests/
destination: tests_reports/
- store_artifacts:
path: ./api/build/reports/jacoco/test/
destination: coverage_reports/
- store_test_results:
path: ./api/build/test-results
- persist_to_workspace:
root: *workspace_root
paths:
- "./api/build/jacoco"
instrumented:
<<: *container_config
steps:
- *attach_workspace
- run:
name: Setup emulator
command: sdkmanager "system-images;android-19;google_apis;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-19;google_apis;armeabi-v7a"
- run:
name: Launch emulator
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 -accel on
background: true
- run:
name: Wait emulator
command: |
# wait for it to have booted
circle-android wait-for-boot
# unlock the emulator screen
sleep 30
adb shell input keyevent 82
- run:
name: Clean project
command: ./gradlew clean --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Run instrumented tests
command: ./gradlew createDebugCoverageReport --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Collect logs from emulator
command: adb logcat -d > ./app/build/reports/logcat_emulator.txt
- run:
name: Upload code covarage to codecov
command: bash <(curl -s https://codecov.io/bash) -F instrumented
- store_artifacts:
path: ./app/build/reports
destination: reports
- store_test_results:
path: ./app/build/outputs/androidTest-results/connected/
- persist_to_workspace:
root: *workspace_root
paths:
- "./app/build/outputs/code-coverage/connected"
sonarcube:
<<: *container_config
steps:
- *attach_workspace
- restore_cache:
<<: *general_cache_key
- run:
name: Prepare coverage report
command: ./gradlew jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Run sonarqube runner
command: ./gradlew -x test -x lint sonarqube -Dsonar.host.url=$SONAR_HOST -Dsonar.organization=$SONAR_ORG -Dsonar.login=$SONAR_KEY -Dsonar.branch.name=$CIRCLE_BRANCH --no-daemon --stacktrace --console=plain -PdisablePreDex
workflows:
version: 2
build_check_tests:
jobs:
- build
- lint:
requires:
- build
- app-test:
requires:
- build
- api-test:
requires:
- build
- instrumented:
requires:
- build
requires:
- build
- sonarcube:
requires:
- build
- lint
- app-test
- api-test
- instrumented