Skip to content
267 changes: 233 additions & 34 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
version: 2
jobs:
build:
docker:
- image: brandonpage/salesforce-mobilesdk-android-docker-primary:0.0.3
environment:
MAVEN_OPTS: "-Xms256m -Xmx1024m"
defaults: &defaults
working_directory: ~/SalesforceMobileSDK-Android
docker:
- image: brandonpage/salesforce-mobilesdk-android-docker-primary:0.0.4
environment:
MAVEN_OPTS: "-Xms256m -Xmx1024m"
environment:
- TERM: "dumb"
- ADB_INSTALL_TIMEOUT: 15
- ANDROID_NDK: '/opt/ndk/android-ndk-r10e'
- BUILD_THREADS: 2

working_directory: ~/SalesforceMobileSDK-Android
attach_workspace: &attach_workspace
attach_workspace:
at: ~/SalesforceMobileSDK-Android

environment:
- TERM: "dumb"
- ADB_INSTALL_TIMEOUT: 10
- ANDROID_NDK: '/opt/ndk/android-ndk-r10e'
- BUILD_THREADS: 2
restore_repo: &restore_repo
restore_cache:
keys:
- jars-{{ checksum "build.gradle" }}-{{ checksum "build.gradle" }}

version: 2
jobs:
setup:
<<: *defaults
steps:
- run:
name: Launch Emulator
command: emulator64-arm -avd test22 -no-audio -no-window -no-boot-anim -gpu off
background: true

- checkout

- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "build.gradle" }}
- run:
Expand All @@ -32,46 +35,242 @@ jobs:
- ~/.gradle
- node_modules
key: jars-{{ checksum "build.gradle" }}-{{ checksum "build.gradle" }}
- persist_to_workspace:
# Must be an absolute path, or relative path from working_directory
root: .
# Must be relative path from root
paths:
- ./**

test-SalesforceAnalytics:
<<: *defaults
steps:
- *attach_workspace
- run: sleep 30
- run:
name: Launch Emulator
command: emulator64-arm -avd test22 -no-audio -no-window -no-boot-anim -gpu off
background: true
- run:
name: Wait for Emulator to boot
command: source .circleci/ci-helper.sh && waitForAVD
- run:
name: Run SalesforceAnalytics Tests
halt_build_on_fail: false
command: ./gradlew :libs:SalesforceAnalytics:connectedAndroidTest --continue --no-daemon --profile --max-workers 2
no_output_timeout: 900
- store_artifacts:
path: libs/SalesforceAnalytics/build/reports/
destination: SalesforceAnalytics
- store_test_results:
path: libs/SalesforceAnalytics/build/outputs/androidTest-results/

test-SalesforceSDK:
<<: *defaults
steps:
- *attach_workspace
- run: sleep 30
- run:
name: Run Tests
name: Launch Emulator
command: emulator64-arm -avd test22 -no-audio -no-window -no-boot-anim -gpu off
background: true
- run:
name: Wait for Emulator to boot
command: source .circleci/ci-helper.sh && waitForAVD
- run:
name: Run SalesforceSDK Tests
halt_build_on_fail: false
command: ./gradlew :libs:SalesforceAnalytics:connectedAndroidTest :libs:SalesforceSDK:connectedAndroidTest :libs:SmartStore:connectedAndroidTest :libs:SmartSync:connectedAndroidTest :libs:SalesforceHybrid:connectedAndroidTest :libs:SalesforceReact:assembleDebug -p . --continue --no-daemon --profile --max-workers 2
no_output_timeout: 1800
command: ./gradlew :libs:SalesforceSDK:connectedAndroidTest --continue --no-daemon --profile --max-workers 2
no_output_timeout: 900
- store_artifacts:
path: libs/SalesforceSDK/build/reports/
destination: SalesforceSDK
- store_test_results:
path: libs/SalesforceSDK/build/outputs/androidTest-results/
- run: ls libs/SalesforceAnalytics/build/outputs/androidTest-results/

test-SmartStore:
<<: *defaults
steps:
- *attach_workspace
- run: sleep 30
- run:
name: Launch Emulator
command: emulator64-arm -avd test22 -no-audio -no-window -no-boot-anim -gpu off
background: true
- run:
name: Wait for Emulator to boot
command: source .circleci/ci-helper.sh && waitForAVD
- run:
name: Run SmartStore Tests
halt_build_on_fail: false
command: ./gradlew :libs:SmartStore:connectedAndroidTest --continue --no-daemon --profile --max-workers 2
no_output_timeout: 900
- store_artifacts:
path: ./build/archives
destination: archives
path: libs/SmartStore/build/reports/
destination: SmartStore
- store_test_results:
path: libs/SmartStore/build/outputs/androidTest-results/
- run: ls libs/SalesforceAnalytics/build/outputs/androidTest-results/

test-SmartSync:
<<: *defaults
steps:
- *attach_workspace
- run: sleep 30
- run:
name: Launch Emulator
command: emulator64-arm -avd test22 -no-audio -no-window -no-boot-anim -gpu off
background: true
- run:
name: Wait for Emulator to boot
command: source .circleci/ci-helper.sh && waitForAVD
- run:
name: Run SmartSync Tests
halt_build_on_fail: false
command: ./gradlew :libs:SmartSync:connectedAndroidTest --continue --no-daemon --profile --max-workers 2
no_output_timeout: 900
- store_artifacts:
path: ./build/reports
destination: reports
path: libs/SmartSync/build/reports/
destination: SmartSync
- store_test_results:
path: libs/SmartSync/build/outputs/androidTest-results/
- run: ls libs/SalesforceAnalytics/build/outputs/androidTest-results/

test-SalesforceHybrid:
<<: *defaults
steps:
- *attach_workspace
- run: sleep 30
- run:
name: Launch Emulator
command: emulator64-arm -avd test22 -no-audio -no-window -no-boot-anim -gpu off
background: true
- run:
name: Wait for Emulator to boot
command: source .circleci/ci-helper.sh && waitForAVD
- run:
name: Run SalesforceHybrid Tests
halt_build_on_fail: false
command: ./gradlew :libs:SalesforceHybrid:connectedAndroidTest --continue --no-daemon --profile --max-workers 2
no_output_timeout: 900
- store_artifacts:
path: ./build/outputs
destination: outputs
path: libs/SalesforceHybrid/build/reports/
destination: SalesforceHybrid
- store_test_results:
path: libs/SalesforceHybrid/build/outputs/androidTest-results/
- run: ls libs/SalesforceAnalytics/build/outputs/androidTest-results/

test-SalesforceReact:
<<: *defaults
steps:
- *attach_workspace
- run:
name: Build SalesforceReact
halt_build_on_fail: false
command: ./gradlew :libs:SalesforceReact:assembleDebug -p . --continue --no-daemon --profile --max-workers 2

combine-test-reports:
<<: *defaults
steps:
- *attach_workspace
- *restore_repo
- run: npm install -g junit-merge
- run:
name: Combine lib Test Restuls
command: junit-merge libs/**/build/outputs/androidTest-results/*.xml
- store_artifacts:
path: ./build/outputs/androidTest-results/connected/
path: ./merged-test-results.xml
- store_test_results:
path: ./merged-test-results.xml


test-all:
<<: *defaults
steps:
- *attach_workspace
#- *restore_repo
- run:
name: Run Tests
halt_build_on_fail: false
command: ./gradlew :libs:SalesforceAnalytics:connectedAndroidTest :libs:SalesforceSDK:connectedAndroidTest :libs:SmartStore:connectedAndroidTest :libs:SmartSync:connectedAndroidTest :libs:SalesforceHybrid:connectedAndroidTest :libs:SalesforceReact:assembleDebug -p . --continue --no-daemon --profile --max-workers 2
no_output_timeout: 900

- store_artifacts:
path: libs/SalesforceAnalytics/build/reports/
destination: SalesforceAnalytics
- store_test_results:
path: libs/SalesforceAnalytics/build/reports/
path: libs/SalesforceAnalytics/build/outputs/androidTest-results/
- store_artifacts:
path: libs/SalesforceSDK/build/reports/
destination: SalesforceSDK
- store_test_results:
path: libs/SalesforceSDK/build/reports/
path: libs/SalesforceSDK/build/outputs/androidTest-results/
- store_artifacts:
path: libs/SmartStore/build/reports/
destination: SmartStore
- store_test_results:
path: libs/SmartStore/build/reports/
path: libs/SmartStore/build/outputs/androidTest-results/
- store_artifacts:
path: libs/SmartSync/build/reports/
destination: SmartSync
- store_test_results:
path: libs/SmartSync/build/reports/
path: libs/SmartSync/build/outputs/androidTest-results/
- store_artifacts:
path: libs/SalesforceHybrid/build/reports/
destination: SalesforceHybrid
- store_test_results:
path: libs/SalesforceHybrid/build/reports/
path: libs/SalesforceHybrid/build/outputs/androidTest-results/

- run: npm install -g junit-merge
- run:
name: Combine lib Test Restuls
command: junit-merge libs/**/build/outputs/androidTest-results/*.xml


workflows:
version: 2

PR_Flow:
jobs:
- setup
- test-SalesforceAnalytics:
requires:
- setup
- test-SalesforceSDK:
requires:
- setup
- test-SmartStore:
requires:
- setup
- test-SmartSync:
requires:
- setup
- test-SalesforceHybrid:
requires:
- setup
- test-SalesforceReact:
requires:
- setup
- combine-test-reports:
requires:
- test-SalesforceAnalytics
- test-SalesforceSDK
- test-SmartStore
- test-SmartSync
- test-SalesforceHybrid
- test-SalesforceReact

Nightly_Flow:
triggers:
- schedule:
cron: "0 0 * * *"
filters:
branches:
only:
- dev
jobs:
- setup
- test-all:
requires:
- setup