11aliases :
22 # Docker image tags can be found here: https://circleci.com/developer/images/image/cimg/android
3- - &cimg cimg/android:2023.08 .1-node
3+ - &cimg cimg/android:2023.11 .1-node
44 # Most used according to https://gs.statcounter.com/android-version-market-share/mobile-tablet/worldwide
55 - &default-api-level 33
66
@@ -70,44 +70,15 @@ executors:
7070 GRADLE_OPTS : ' -Dorg.gradle.jvmargs="-Xmx4096m -XX:+HeapDumpOnOutOfMemoryError" -Dorg.gradle.daemon=false'
7171
7272jobs :
73- static-analysis :
74- executor : linux
73+ pr-danger :
74+ docker :
75+ - image : cimg/ruby:3.2.2
7576 steps :
7677 - checkout
77- - restore_cache : *restore-gradle-cache
78- - restore_cache : *restore-node-cache
79- - restore_cache : *restore-ruby-cache
8078 - run :
81- name : Setup Environment
8279 command : |
83- ./install.sh
84- sudo chmod -R a+w /var/lib/gems/ && sudo chmod -R a+w /usr/local/bin
85- gem install bundler
8680 gem install danger
87- gem install danger-junit
88- gem install danger-android_lint
89- gem install danger-jacoco
90- echo $TEST_CREDENTIALS > ./shared/test/test_credentials.json
91- - run :
92- name : Run Android Lint
93- command : ./gradlew lint
94- when : always
95- - run :
96- name : Run Danger
97- command : |
98- if [[ $CIRCLE_BRANCH == *"pull"* ]]; then
99- # These env vars are not set properly on rebuilds
100- export CIRCLE_PULL_REQUEST="https://github.com/forcedotcom/SalesforceMobileSDK-Android/${CIRCLE_BRANCH}"
101- export CIRCLE_PULL_REQUESTS="https://github.com/forcedotcom/SalesforceMobileSDK-Android/${CIRCLE_BRANCH}"
102- export CI_PULL_REQUEST="https://github.com/forcedotcom/SalesforceMobileSDK-Android/${CIRCLE_BRANCH}"
103- export CI_PULL_REQUESTS="https://github.com/forcedotcom/SalesforceMobileSDK-Android/${CIRCLE_BRANCH}"
104- danger --dangerfile=.circleci/Dangerfile_PR.rb --danger_id=PR-Check --verbose
105- else
106- echo "No need to run Danger."
107- fi
108- - save_cache : *save-gradle-cache
109- - save_cache : *save-node-cache
110- - save_cache : *save-ruby-cache
81+ danger --dangerfile=.circleci/Dangerfile_PR.rb --danger_id=PR-Check --verbose
11182
11283 run-tests :
11384 executor : linux
@@ -124,10 +95,6 @@ jobs:
12495 default : false
12596 steps :
12697 - checkout
127- - restore_cache : *restore-gradle-cache
128- - restore_cache : *restore-node-cache
129- - restore_cache : *restore-ruby-cache
130- - run : *setup-env
13198 - when :
13299 condition : << parameters.pr >>
133100 steps :
@@ -144,22 +111,26 @@ jobs:
144111 echo -e "\n\nNo need to test << parameters.lib >> for this PR, stopping execution."
145112 circleci step halt
146113 fi
114+ - restore_cache : *restore-gradle-cache
115+ - restore_cache : *restore-node-cache
116+ - restore_cache : *restore-ruby-cache
117+ - run : *setup-env
118+ - run :
119+ name : Static Analysis
120+ command : ./gradlew libs:<< parameters.lib >>:lint
147121 - run :
148122 name : Build for Testing
149123 command : |
150- ./gradlew libs:SalesforceAnalytics:assembleAndroidTest
151- ./gradlew libs:SalesforceSDK:assembleAndroidTest
152- ./gradlew libs:SmartStore:assembleAndroidTest
153- ./gradlew libs:MobileSync:assembleAndroidTest
154- ./gradlew libs:SalesforceHybrid:assembleAndroidTest
155- ./gradlew libs:SalesforceReact:assembleAndroidTest
124+ ./gradlew libs:<< parameters.lib >>:assembleAndroidTest
156125 ./gradlew native:NativeSampleApps:RestExplorer:assembleDebug
126+ when : always
157127 - run :
158128 name : Authorize gcloud and set config defaults
159129 command : |
160130 echo $GCLOUD_SERVICE_KEY | base64 --decode --ignore-garbage > ${HOME}/gcloud-service-key.json
161131 gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.json
162132 gcloud --quiet config set project mobile-apps-firebase-test
133+ when : always
163134 - run :
164135 name : Run << parameters.lib >> Tests with API << parameters.api_level >>
165136 command : |
@@ -180,8 +151,9 @@ jobs:
180151 --directories-to-pull=/sdcard \
181152 --results-dir=<< parameters.lib >>-${CIRCLE_BUILD_NUM} \
182153 --results-history-name=<< parameters.lib >> \
183- --timeout=20m --no-auto-google-login --no-record-video --no-performance-metrics
154+ --timeout=20m --no-auto-google-login --no-record-video --no-performance-metrics --num-flaky-test-attempts=1
184155 no_output_timeout : 20m
156+ when : always
185157 - run :
186158 name : Copy test results data
187159 command : |
@@ -214,8 +186,12 @@ jobs:
214186 danger --dangerfile=.circleci/Dangerfile_Lib.rb --danger_id=<< parameters.lib >> --verbose
215187 background : true
216188 when : always
189+ environment :
190+ CURRENT_LIB : << parameters.lib >>
217191 - store_artifacts :
218192 path : firebase/
193+ - store_artifacts :
194+ path : libs/<< parameters.lib >>/build/reports/
219195 - store_test_results :
220196 path : firebase/results
221197
@@ -326,7 +302,6 @@ jobs:
326302 ./gradlew :native:NativeSampleApps:AppConfigurator:assemble
327303 ./gradlew :native:NativeSampleApps:ConfiguredApp:assemble
328304 ./gradlew :native:NativeSampleApps:RestExplorer:assemble
329- ./gradlew :native:NativeSampleApps:MobileSyncExplorer:assemble
330305 - store_artifacts :
331306 path : native/NativeSampleApps/AppConfigurator/build/outputs/apk/
332307 destination : native-apps
@@ -336,9 +311,6 @@ jobs:
336311 - store_artifacts :
337312 path : native/NativeSampleApps/RestExplorer/build/outputs/apk/
338313 destination : native-apps
339- - store_artifacts :
340- path : native/NativeSampleApps/MobileSyncExplorer/build/outputs/apk/
341- destination : native-apps
342314 - run :
343315 name : Build Hybrid Sample Apps
344316 when : always
@@ -370,7 +342,7 @@ workflows:
370342 pattern : " ^pull/\\ d+$"
371343 value : << pipeline.git.branch >>
372344 jobs :
373- - static-analysis :
345+ - pr-danger :
374346 context : Android Unit Tests
375347 - run-tests :
376348 name : << matrix.lib >>
@@ -382,16 +354,15 @@ workflows:
382354 pr : [ true ]
383355
384356 # GUI Driven "Triggers" Schedule
385- # Monday 8 PM - API 24
386- # Monday 9 PM - API 26
387- # Monday 10 PM - API 27
388- # Monday 11 PM - API 30
389- # Tuesday 12 AM - API 32
390- # Friday 8 PM - API 25
391- # Friday 9 PM - API 27
392- # Friday 10 PM - API 29
393- # Friday 11 PM - API 31
394- # Saturday 12 AM - API 33
357+ # Monday 8 PM - API 26
358+ # Monday 9 PM - API 28
359+ # Monday 10 PM - API 30
360+ # Monday 11 PM - API 32
361+ # Tuesday 12 AM - API 34
362+ # Friday 8 PM - API 27
363+ # Friday 9 PM - API 29
364+ # Friday 10 PM - API 31
365+ # Friday 11 PM - API 33
395366 nightly-tests :
396367 when :
397368 not :
0 commit comments