Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

CircleCI pipeline improvement (DEV) #1327

Merged
merged 67 commits into from
Oct 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
3bd39cb
CircleCI new workflow
AlexanderAlferov Oct 1, 2020
3a33aaf
CircleCi new workflow
AlexanderAlferov Oct 1, 2020
eac7748
CircleCi new workflow
AlexanderAlferov Oct 1, 2020
b358828
CircleCi new workflow
AlexanderAlferov Oct 1, 2020
210c44f
CircleCi new workflow
AlexanderAlferov Oct 1, 2020
babef1f
CircleCi new workflow
AlexanderAlferov Oct 1, 2020
e46ec0f
Test change to test CircleCI
AlexanderAlferov Oct 1, 2020
19848a3
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
37b49ae
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
20bf064
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
0f88d43
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
99197e3
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
8ffd677
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
69a4165
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
74d41a0
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
c87fdc2
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
66ac865
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
06c1597
CircleCi new workflow
AlexanderAlferov Oct 2, 2020
42c3138
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
958d42d
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
de45bad
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
c46c964
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
2f78d15
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
fcc9e51
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
29edea6
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
09b9026
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
f8f87f7
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
ccbf2f2
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
535a61d
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
06dadae
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
9103cf6
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
45457d8
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
5a3a496
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
26b5705
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
3ff6d31
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
abc72cd
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
ce5e97d
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
6aae517
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
9fbe586
CircleCi new workflow
AlexanderAlferov Oct 5, 2020
2f106fe
Version bump
AlexanderAlferov Oct 5, 2020
dba6dd8
Version bump
AlexanderAlferov Oct 5, 2020
407a065
Version bump
AlexanderAlferov Oct 5, 2020
881ff37
Rollback gradle
AlexanderAlferov Oct 6, 2020
f31f4ac
Merge remote-tracking branch 'origin/release/1.5.x' into feature/circ…
AlexanderAlferov Oct 6, 2020
2ea4d3d
Version bump
AlexanderAlferov Oct 6, 2020
cd5367e
Merge branch 'release/1.5.x' into feature/circleci-improvement
AlexanderAlferov Oct 6, 2020
566c729
Merge branch 'release/1.5.x' into feature/circleci-improvement
AlexanderAlferov Oct 6, 2020
d237269
Switched to version code check
AlexanderAlferov Oct 6, 2020
13d786e
Merge branch 'feature/circleci-improvement' of https://github.com/cor…
AlexanderAlferov Oct 6, 2020
e79f165
Test bump
AlexanderAlferov Oct 6, 2020
f78ddd8
Added echo checks for version code check
AlexanderAlferov Oct 6, 2020
1f29194
Test bump
AlexanderAlferov Oct 6, 2020
624f99c
Test bump
AlexanderAlferov Oct 6, 2020
83424c0
Version bump
AlexanderAlferov Oct 6, 2020
cbaebc8
Test update
AlexanderAlferov Oct 6, 2020
a9f33ce
Merge branch 'release/1.5.x' into feature/circleci-improvement
AlexanderAlferov Oct 6, 2020
db91fd3
Merge branch 'release/1.5.x' into feature/circleci-improvement
AlexanderAlferov Oct 6, 2020
85ea3a2
Merge branch 'release/1.5.x' into feature/circleci-improvement
ralfgehrer Oct 6, 2020
be35af1
Merge branch 'release/1.5.x' into feature/circleci-improvement
AlexanderAlferov Oct 7, 2020
3d32332
Test update
AlexanderAlferov Oct 7, 2020
e8d31b9
More testing folders
AlexanderAlferov Oct 7, 2020
23f28c6
Merge branch 'feature/circleci-improvement' of https://github.com/cor…
AlexanderAlferov Oct 7, 2020
cb055b6
Add wild card for test folders
AlexanderAlferov Oct 7, 2020
5921163
Wildcard matching for the unit test file filter.
d4rken Oct 7, 2020
cb0e91e
Merge remote-tracking branch 'origin/feature/circleci-improvement' in…
d4rken Oct 7, 2020
4fc31fc
Merge branch 'release/1.5.x' into feature/circleci-improvement
d4rken Oct 7, 2020
fb36105
Merge branch 'release/1.5.x' into feature/circleci-improvement
d4rken Oct 7, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
188 changes: 181 additions & 7 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,56 @@ commands:
save-build-cache: android/save-build-cache
scan-sonar: sonarcloud/scan
jobs:
quickBuildReleaseWithTestsAndChecks:
quick_build_release_no_tests:
executor: android/android
resource_class: large
steps:
- checkout
- run:
name: Check if assemble required
command: |
last_commit=$(git log -1 --pretty=%B)
if [[ $last_commit != *"Version bump"* ]]; then
circleci-agent step halt
echo "Skipping job"
fi
- install-ndk:
ndk-sha: "c81a5bcb4672a18d3647bf6898cd4dbcb978d0e8"
ndk-version: "android-ndk-r21c"
- restore-build-cache
- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "Corona-Warn-App/build.gradle" }}-{{ checksum "Server-Protocol-Buffer/build.gradle" }}
- run:
name: Quick Build
command: ./gradlew assembleDeviceRelease
environment:
JVM_OPTS: -Xmx2048m
GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
- save-build-cache
- save_cache:
paths:
- ~/.gradle
key: jars-{{ checksum "build.gradle" }}-{{ checksum "Corona-Warn-App/build.gradle" }}-{{ checksum "Server-Protocol-Buffer/build.gradle" }}
- store_artifacts:
path: Corona-Warn-App/build/reports
destination: reports
- run:
name: Skip SonarCloud for external Pull Requests
command: '[[ -v CIRCLE_PR_REPONAME ]] && circleci-agent step halt || true'
- scan-sonar
quick_build_for_testers_no_tests:
executor: android/android
resource_class: large
steps:
- checkout
- run:
name: Check if assemble required
command: |
last_commit=$(git log -1 --pretty=%B)
if [[ $last_commit != *"Version bump"* ]]; then
circleci-agent step halt
echo "Skipping job"
fi
- install-ndk:
ndk-sha: "c81a5bcb4672a18d3647bf6898cd4dbcb978d0e8"
ndk-version: "android-ndk-r21c"
Expand All @@ -20,7 +66,33 @@ jobs:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "Corona-Warn-App/build.gradle" }}-{{ checksum "Server-Protocol-Buffer/build.gradle" }}
- run:
name: Quick Build
command: ./gradlew quickBuild quickBuildTest
command: ./gradlew :Corona-Warn-App:assembleDeviceForTestersRelease
environment:
JVM_OPTS: -Xmx2048m
GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
- save-build-cache
- save_cache:
paths:
- ~/.gradle
key: jars-{{ checksum "build.gradle" }}-{{ checksum "Corona-Warn-App/build.gradle" }}-{{ checksum "Server-Protocol-Buffer/build.gradle" }}
- store_artifacts:
path: Corona-Warn-App/build/reports
destination: reports
device_release_unit_tests:
executor: android/android
resource_class: large
parallelism: 4
steps:
- checkout
- restore-build-cache
- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "Corona-Warn-App/build.gradle" }}-{{ checksum "Server-Protocol-Buffer/build.gradle" }}
- run:
name: test splitting output
command: circleci tests glob "**/test*/**/*.kt" | circleci tests split | xargs -n 1 echo
- run:
name: Unit tests
command: ./gradlew :Corona-Warn-App:testDeviceReleaseUnitTest -i -PtestFilter="`circleci tests glob "**/test*/**/*.kt" | circleci tests split`"
environment:
JVM_OPTS: -Xmx2048m
GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
Expand All @@ -40,12 +112,114 @@ jobs:
destination: reports
- store_test_results:
path: Corona-Warn-App/build/test-results
device_for_testers_unit_tests:
executor: android/android
resource_class: large
parallelism: 4
steps:
- checkout
- restore-build-cache
- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "Corona-Warn-App/build.gradle" }}-{{ checksum "Server-Protocol-Buffer/build.gradle" }}
- run:
name: Skip SonarCloud for external Pull Requests
command: '[[ -v CIRCLE_PR_REPONAME ]] && circleci-agent step halt || true'
- scan-sonar
name: test splitting output
command: circleci tests glob "**/test*/**/*.kt" | circleci tests split | xargs -n 1 echo
- run:
name: Unit tests
command: ./gradlew :Corona-Warn-App:testDeviceForTestersReleaseUnitTest -i -PtestFilter="`circleci tests glob "**/test*/**/*.kt" | circleci tests split`"
environment:
JVM_OPTS: -Xmx2048m
GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
- save-build-cache
- save_cache:
paths:
- ~/.gradle
key: jars-{{ checksum "build.gradle" }}-{{ checksum "Corona-Warn-App/build.gradle" }}-{{ checksum "Server-Protocol-Buffer/build.gradle" }}
- store_artifacts:
path: Corona-Warn-App/build/reports
destination: reports
- store_test_results:
path: Corona-Warn-App/build/test-results
lint_device_release_check:
executor: android/android
resource_class: large
steps:
- checkout
- run:
name: Lint check device release
command: ./gradlew --profile :Corona-Warn-App:lintDeviceRelease
environment:
JVM_OPTS: -Xmx2048m
GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
- store_artifacts:
path: Corona-Warn-App/build/reports
destination: reports
ktlint_device_release_check:
executor: android/android
resource_class: medium
steps:
- checkout
- run:
name: Ktlint check device release
command: ./gradlew :Corona-Warn-App:ktlintDeviceReleaseCheck
environment:
JVM_OPTS: -Xmx2048m
GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
- store_artifacts:
path: Corona-Warn-App/build/reports
destination: reports
lint_device_for_testers_check:
executor: android/android
resource_class: large
steps:
- checkout
- run:
name: Lint check device for testers
command: ./gradlew --profile :Corona-Warn-App:lintDeviceForTestersRelease
environment:
JVM_OPTS: -Xmx2048m
GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
- store_artifacts:
path: Corona-Warn-App/build/reports
destination: reports
ktlint_device_for_testers_check:
executor: android/android
resource_class: medium
steps:
- checkout
- run:
name: Ktlint check device for testers
command: ./gradlew :Corona-Warn-App:ktlintDeviceForTestersReleaseCheck
environment:
JVM_OPTS: -Xmx2048m
GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
- store_artifacts:
path: Corona-Warn-App/build/reports
destination: reports
detekt:
executor: android/android
resource_class: medium
steps:
- checkout
- run:
name: Detekt check
command: ./gradlew :Corona-Warn-App:detekt
environment:
JVM_OPTS: -Xmx2048m
GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
- store_artifacts:
path: Corona-Warn-App/build/reports
destination: reports
workflows:
version: 2
workflow:
quick_build:
jobs:
- quickBuildReleaseWithTestsAndChecks
- quick_build_release_no_tests
- quick_build_for_testers_no_tests
- device_release_unit_tests
- device_for_testers_unit_tests
- lint_device_release_check
- lint_device_for_testers_check
- ktlint_device_release_check
- ktlint_device_for_testers_check
- detekt
11 changes: 10 additions & 1 deletion Corona-Warn-App/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,16 @@ android {
testOptions {
unitTests.all {
useJUnitPlatform()
if (project.hasProperty('testFilter')) {
List<String> props = project.getProperties().get("testFilter").split("\\s+")
props.each {
def replaced = it
.replaceFirst("^(Corona-Warn-App/src/test.*/java/)(.+)\$", "**/\$2")
.replace(".kt", ".class")
project.logger.lifecycle("testFilter File: before=$it, after=$replaced")
include(replaced)
}
}
}
unitTests {
includeAndroidResources = true
Expand Down Expand Up @@ -167,7 +177,6 @@ android {
}
}
}

}

task jacocoTestReportDeviceRelease(type: JacocoReport, dependsOn: 'testDeviceReleaseUnitTest') {
Expand Down