diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f7ee8111bfa5e726b6ef8ff68c5ce7292043b3ef..8a5bff41b680a03c871fad28396d70759c17c36f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,6 +2,8 @@ image: registry.gitlab.e.foundation/e/os/docker-android-apps-cicd:latest variables: GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle" + GRADLE_CACHE_KEY: "${CI_PROJECT_ID}" + GRADLE_RELEASE_ARGS: "--parallel --build-cache --configure-on-demand --no-daemon" SENTRY_DSN: $SENTRY_DSN APK_PATH: "app/build/outputs/apk/release" UNSIGNED_APK: "AppLounge_release.apk" @@ -33,6 +35,23 @@ before_script: - export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 - echo user_agent=$USER_AGENT > local.properties +.gradle-cache-pull: &gradle_cache_pull + key: ${GRADLE_CACHE_KEY} + paths: + - .gradle/ + policy: pull + +.gradle-cache-pull-push: &gradle_cache_pull_push + key: ${GRADLE_CACHE_KEY} + paths: + - .gradle/ + policy: pull-push + +.needs-release-artifacts: &needs_release_artifacts + - job: generate-apks + - job: create-json-files + artifacts: false + .rules_merge_request_ref: rules: &rules_merge_request_ref - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS' @@ -76,7 +95,7 @@ before_script: stage: build rules: *rules_merge_request_ref script: - - ./gradlew testReleaseUnitTest jacocoReleaseReport -PtestAccountName="$testAccountName" -PtestAccountPwd="$testAccountPwd" -PtestServerUrl="$testServerUrl" lintRelease detekt assembleRelease --parallel --build-cache --configure-on-demand --no-daemon + - ./gradlew testReleaseUnitTest jacocoReleaseReport -PtestAccountName="$testAccountName" -PtestAccountPwd="$testAccountPwd" -PtestServerUrl="$testServerUrl" lintRelease detekt assembleRelease $GRADLE_RELEASE_ARGS - python3 scripts/print_instruction_coverage.py app/build/reports/jacoco/jacocoReleaseReport/jacocoReleaseReport.xml coverage: "/Total.*?([0-9]{1,3})%/" artifacts: @@ -95,30 +114,18 @@ build-release: extends: .build rules: *rules_protected_ref allow_failure: false - cache: - key: ${CI_PROJECT_ID} - paths: - - .gradle/ - policy: pull + cache: *gradle_cache_pull build-generate-cache: extends: .build allow_failure: true rules: - when: manual - cache: - key: ${CI_PROJECT_ID} - paths: - - .gradle/ - policy: pull-push + cache: *gradle_cache_pull_push build-debug: stage: build - cache: - key: ${CI_PROJECT_ID} - paths: - - .gradle/ - policy: pull + cache: *gradle_cache_pull allow_failure: true rules: - when: manual @@ -149,6 +156,19 @@ generate-apks: - $APK_PATH/$OFFICIAL_APK - $APK_PATH/$TEST_APK +.publish-release-from-apks: + stage: publish + rules: *rules_protected_tag_manual + needs: *needs_release_artifacts + allow_failure: true + +.publish-library: + stage: publish + needs: + - job: build-release + rules: *rules_publish + allow_failure: true + create-json-files: stage: publish rules: *rules_protected_tag @@ -165,47 +185,27 @@ create-json-files: - test.json create-test-release: - stage: publish - rules: *rules_protected_tag_manual - needs: - - job: generate-apks - - job: create-json-files - artifacts: false + extends: .publish-release-from-apks script: - | ./systemAppsUpdateInfo/scripts/create-test-release.sh \ "$APK_PATH" "$TEST_APK" - allow_failure: true create-release: - stage: publish - rules: *rules_protected_tag_manual - needs: - - job: generate-apks - - job: create-json-files - artifacts: false + extends: .publish-release-from-apks script: - | ./systemAppsUpdateInfo/scripts/create-release.sh \ "$APK_PATH" "$UNSIGNED_APK" "$COMMUNITY_APK" "$OFFICIAL_APK" - allow_failure: true publish-authdatalib: - stage: publish - needs: - - job: build-release - rules: *rules_publish + extends: .publish-library script: - ./gradlew :auth-data-lib:build - ./gradlew :auth-data-lib:publish - allow_failure: true publish-contracts: - stage: publish - needs: - - job: build-release - rules: *rules_publish + extends: .publish-library script: - ./gradlew :parental-control-data:build - ./gradlew :parental-control-data:publish - allow_failure: true