summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2016-10-21 22:24:52 +0200
committerGitHub <noreply@github.com>2016-10-21 22:24:52 +0200
commit8633c34d014bd5390541bf74f95a5533ad971e89 (patch)
tree6cd67e82b3055a7149804e692b2f6ac53d0b0eaf
parent7a4cd67aa8e3791c0460a649bcb5e0388a45c192 (diff)
downloadqtlocation-mapboxgl-8633c34d014bd5390541bf74f95a5533ad971e89.tar.gz
Android Bitrise cleanup (#6782)
* [android] - update bitrise.yml, always use latest deploy step cleanup bitrise.yml formatting, separate download step -> if tests fail, build fails improve shown console messages, correct package for firebase filter update steps add slack integration for all workflows * fixup SKIPCI check
-rw-r--r--platform/android/bitrise.yml182
1 files changed, 136 insertions, 46 deletions
diff --git a/platform/android/bitrise.yml b/platform/android/bitrise.yml
index 9e4ffd60dd..c168a9a6d6 100644
--- a/platform/android/bitrise.yml
+++ b/platform/android/bitrise.yml
@@ -26,58 +26,101 @@ workflows:
envman add --key SKIPCI --value false
fi
- script:
- title: Build
+ title: Configure GL-native build environement
run_if: '{{enveq "SKIPCI" "false"}}'
inputs:
- content: |-
#!/bin/bash
+ set -eu -o pipefail
+ curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
+ sudo apt-get install -y pkg-config nodejs cmake
+ - script:
+ title: Configure Google Cloud SDK
+ run_if: '{{enveq "SKIPCI" "false"}}'
+ inputs:
+ - content: |-
+ #!/bin/bash
+ # Install python tools for pip
sudo apt-get install -y gcc python-dev python-setuptools
sudo easy_install -U pip
sudo pip uninstall crcmod
sudo pip install -U crcmod
- set -eu -o pipefail
- curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
- sudo apt-get install -y pkg-config nodejs cmake
- export BUILDTYPE=Debug
- make android
- make android-test
- make android-generate-test
- wget -O platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml "$BITRISEIO_TEST_ACCESS_TOKEN_UI_TEST_URL"
- make android-test-apk
- wget -O secret.json "$BITRISEIO_GCLOUD_SERVICE_ACCOUNT_JSON_URL"
+
+ # Install Google Cloud SDK for Firebase
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install google-cloud-sdk
- gcloud auth activate-service-account --key-file secret.json --project android-gl-native
- gcloud beta test android devices list
- gcloud beta test android run --type instrumentation --app platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-debug.apk --test platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-debug-androidTest-unaligned.apk --device-ids shamu --os-version-ids 22 --locales en --orientations portrait --timeout 15m --test-targets "class com.mapbox.mapboxsdk.camera.RotateTest"
+
+ # Get authentication secret
+ echo "Downloading Google Cloud authnetication:"
+ wget -O secret.json "$BITRISEIO_GCLOUD_SERVICE_ACCOUNT_JSON_URL"
- script:
- title: Download test results
- is_always_run: true
+ title: Build libmapbox-gl.so for armeabi-v7a
+ run_if: '{{enveq "SKIPCI" "false"}}'
inputs:
- content: |-
#!/bin/bash
- testUri="gs://test-lab-wrrntqk05p31w-h3y1qk44vuunw/"
- testUri=$(gsutil ls $testUri | tail -n1)
- echo "Downloading from : "$testUri
- cd platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk && gsutil -m cp -R -Z $testUri .
- - deploy-to-bitrise-io@1.2.3:
+ echo "Compile libmapbox-gl.so for armeabi-v7a abi:"
+ export BUILDTYPE=Debug
+ make android-lib-arm-v7
+ - script:
+ title: Run local JVM Unit tests
+ run_if: '{{enveq "SKIPCI" "false"}}'
inputs:
- - deploy_path: "platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk"
- - notify_user_groups: none
- - is_compress: 'true'
+ - content: |-
+ #!/bin/bash
+ echo "Running unit tests from testapp/src/test:"
+ make android-test
+ - script:
+ title: Generate Espresso sanity tests
+ run_if: '{{enveq "SKIPCI" "false"}}'
+ inputs:
+ - content: |-
+ #!/bin/bash
+ echo "Generate these test locally by executing:"
+ make android-generate-test
+ - script:
+ title: Run Firebase instrumentation tests
+ run_if: '{{enveq "SKIPCI" "false"}}'
+ inputs:
+ - content: |-
+ #!/bin/bash
+ echo "Downloading Mapbox accesstoken for running tests:"
+ wget -O platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml "$BITRISEIO_TEST_ACCESS_TOKEN_UI_TEST_URL"
+
+ echo "Build seperate test apk:"
+ make android-test-apk
+
+ echo "Run tests on firebase:"
+ gcloud auth activate-service-account --key-file secret.json --project android-gl-native
+ gcloud beta test android devices list
+ gcloud beta test android run --type instrumentation --app platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-debug.apk --test platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-debug-androidTest-unaligned.apk --device-ids shamu --os-version-ids 22 --locales en --orientations portrait --timeout 15m --test-targets "class com.mapbox.mapboxsdk.testapp.camera.RotateActivityTest"
+ echo "The details are made available as a zipped build artefact on top of this page."
- script:
- title: Run ndk-stack
+ title: Download Firebase results
+ run_if: '{{enveq "SKIPCI" "false"}}'
is_always_run: true
inputs:
- content: |-
#!/bin/bash
+ echo "The details from Firebase will be downloaded, zipped and attached as a build artefact."
+ testUri=$(gsutil ls "gs://test-lab-wrrntqk05p31w-h3y1qk44vuunw/" | tail -n1)
+ echo "Downloading from : "$testUri
+ cd platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk && gsutil -m cp -R -Z $testUri .
+
+ echo "Try running ndk-stack on downloaded logcat to symbolicate the stacktraces:"
find platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk -type f -name "logcat" -print0 | xargs -0 -Imylogcat mv -i mylogcat ./
cat logcat | ndk-stack -sym build/android-arm-v7/Debug
+ - deploy-to-bitrise-io:
+ run_if: '{{enveq "SKIPCI" "false"}}'
+ inputs:
+ - deploy_path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk
+ - is_compress: 'true'
+ - notify_user_groups: none
- slack:
- title: Post to Slack
run_if: '{{enveq "SKIPCI" "false"}}'
+ title: Post to Slack
inputs:
- webhook_url: "$SLACK_HOOK_URL"
- channel: "#gl-bots"
@@ -96,49 +139,98 @@ workflows:
scheduled:
steps:
- script:
- title: Build
+ title: Configure GL-native build environement
inputs:
- content: |-
#!/bin/bash
set -eu -o pipefail
-
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
- apt-get install -y pkg-config python-pip python-dev build-essential nodejs cmake
+ sudo apt-get install -y pkg-config nodejs cmake
+ - script:
+ title: Configure AWS-CLI
+ inputs:
+ - content: |-
+ #!/bin/bash
+ apt-get install -y python-pip python-dev build-essential
pip install awscli
-
+ - script:
+ title: Download maven credentials
+ inputs:
+ - content: |-
+ #!/bin/bash
aws s3 cp s3://mapbox/android/signing-credentials/secring.gpg platform/android/MapboxGLAndroidSDK/secring.gpg
+ # Add maven credentals for publishing
echo "NEXUS_USERNAME=$PUBLISH_NEXUS_USERNAME
NEXUS_PASSWORD=$PUBLISH_NEXUS_PASSWORD
signing.keyId=$SIGNING_KEYID
signing.password=$SIGNING_PASSWORD
signing.secretKeyRingFile=secring.gpg" >> platform/android/MapboxGLAndroidSDK/gradle.properties
-
+ - script:
+ title: Build release
+ inputs:
+ - content: |-
+ #!/bin/bash
+ echo "Compile libmapbox-gl.so for all supportd abi's:"
export BUILDTYPE=Release
make apackage
-
- cd platform/android
- ./gradlew uploadArchives
+ - script:
+ title: Publish to maven
+ inputs:
+ - content: |-
+ #!/bin/bash
+ echo "Upload aar file to maven:"
+ cd platform/android && ./gradlew uploadArchives
+ - slack:
+ title: Post to Slack
+ inputs:
+ - webhook_url: "$SLACK_HOOK_URL"
+ - channel: "#gl-bots"
+ - from_username: 'Bitrise Android'
+ - from_username_on_error: 'Bitrise Android'
+ - message: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}> Publish to maven SUCCESS.'
+ - message_on_error: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}> Publish to maven FAILED.'
+ - icon_url: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-icon-128.png
+ - icon_url_on_error: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-error-icon-128.png
devicefarmUpload:
steps:
- script:
- title: Build
+ title: Configure GL-native build environement
inputs:
- content: |-
#!/bin/bash
set -eu -o pipefail
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y pkg-config nodejs cmake
-
- echo "AWS_ACCESS_KEY_ID_DEVICE_FARM=$AWS_ACCESS_KEY_ID_DEVICE_FARM" >> platform/android/MapboxGLAndroidSDKTestApp/gradle.properties
- echo "AWS_SECRET_ACCESS_KEY_DEVICE_FARM=$AWS_SECRET_ACCESS_KEY_DEVICE_FARM" >> platform/android/MapboxGLAndroidSDKTestApp/gradle.properties
-
+ - script:
+ title: Build release
+ inputs:
+ - content: |-
+ #!/bin/bash
+ echo "Compile libmapbox-gl.so for all supportd abi's:"
export BUILDTYPE=Release
make apackage
-
+ - script:
+ title: Add AWS credentials
+ inputs:
+ - content: |-
+ #!/bin/bash
+ echo "AWS_ACCESS_KEY_ID_DEVICE_FARM=$AWS_ACCESS_KEY_ID_DEVICE_FARM" >> platform/android/MapboxGLAndroidSDKTestApp/gradle.properties
+ echo "AWS_SECRET_ACCESS_KEY_DEVICE_FARM=$AWS_SECRET_ACCESS_KEY_DEVICE_FARM" >> platform/android/MapboxGLAndroidSDKTestApp/gradle.properties
+ - script:
+ title: Generate sanity tests
+ inputs:
+ - content: |-
+ #!/bin/bash
+ echo "Generate these test locally by executing:"
make android-generate-test
- cd platform/android/
- ./gradlew devicefarmUpload
+ - script:
+ title: Run AWS Device Farm instrumentation tests
+ inputs:
+ - content: |-
+ #!/bin/bash
+ echo "Run tests on device farm:"
+ cd platform/android && ./gradlew devicefarmUpload
- slack:
title: Post to Slack
inputs:
@@ -146,9 +238,7 @@ workflows:
- channel: "#gl-bots"
- from_username: 'Bitrise Android'
- from_username_on_error: 'Bitrise Android'
- - message: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}>
- for devicefarmUpload passed'
- - message_on_error: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}>
- for devicefarmUpload failed'
+ - message: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}> for devicefarmUpload passed'
+ - message_on_error: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}> for devicefarmUpload failed'
- icon_url: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-icon-128.png
- icon_url_on_error: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-error-icon-128.png