* [android] - move camera logic to dedicated transform class post camera updates to the message queue, this makes calling an new camera update in the on finish of another update possible. Simplify transform.java implementation. * fail the step if instrumentation tests fail, fixup typo
278 lines
11 KiB
YAML
278 lines
11 KiB
YAML
---
|
|
format_version: 1.0.0
|
|
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
|
|
trigger_map:
|
|
- pattern: devicefarmUpload
|
|
workflow: devicefarmUpload
|
|
- pattern: scheduled
|
|
workflow: scheduled
|
|
- pattern: nightly-release
|
|
workflow: nightly-release
|
|
- pattern: "*"
|
|
workflow: primary
|
|
workflows:
|
|
primary:
|
|
steps:
|
|
- script:
|
|
title: Check for skipping CI
|
|
inputs:
|
|
- content: |-
|
|
#!/bin/bash
|
|
|
|
if [[ -n "$(echo $GIT_CLONE_COMMIT_MESSAGE_SUBJECT | sed -n '/\[skip ci\]/p')" ||
|
|
-n "$(echo $GIT_CLONE_COMMIT_MESSAGE_SUBJECT | sed -n '/\[ci skip\]/p')" ||
|
|
-n "$(echo $GIT_CLONE_COMMIT_MESSAGE_BODY | sed -n 's/\[skip ci\]/p')" ||
|
|
-n "$(echo $GIT_CLONE_COMMIT_MESSAGE_BODY | sed -n 's/\[ci skip\]/p')" ]]; then
|
|
envman add --key SKIPCI --value true
|
|
else
|
|
envman add --key SKIPCI --value false
|
|
fi
|
|
- script:
|
|
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
|
|
|
|
# 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 -y google-cloud-sdk
|
|
|
|
# Get authentication secret
|
|
echo "Downloading Google Cloud authentication:"
|
|
wget -O secret.json "$BITRISEIO_GCLOUD_SERVICE_ACCOUNT_JSON_URL"
|
|
- script:
|
|
title: Build libmapbox-gl.so for armeabi-v7a
|
|
run_if: '{{enveq "SKIPCI" "false"}}'
|
|
inputs:
|
|
- content: |-
|
|
#!/bin/bash
|
|
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:
|
|
- content: |-
|
|
#!/bin/bash
|
|
echo "Running unit tests from testapp/src/test:"
|
|
make run-android-unit-test
|
|
- script:
|
|
title: Generate Espresso sanity tests
|
|
run_if: '{{enveq "SKIPCI" "false"}}'
|
|
inputs:
|
|
- content: |-
|
|
#!/bin/bash
|
|
echo "Generate these test locally by executing:"
|
|
make test-code-android
|
|
- 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-ui-test
|
|
|
|
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.apk --device-ids shamu --os-version-ids 22 --locales en --orientations portrait --timeout 15m
|
|
- script:
|
|
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:
|
|
run_if: '{{enveq "SKIPCI" "false"}}'
|
|
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}>
|
|
for <https://github.com/mapbox/mapbox-gl-native/compare/${BITRISE_GIT_BRANCH}|mapbox/mapbox-gl-native@${BITRISE_GIT_BRANCH}>
|
|
by ${GIT_CLONE_COMMIT_COMMITER_NAME}
|
|
passed'
|
|
- message_on_error: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}>
|
|
for <https://github.com/mapbox/mapbox-gl-native/compare/${BITRISE_GIT_BRANCH}|mapbox/mapbox-gl-native@${BITRISE_GIT_BRANCH}>
|
|
by ${GIT_CLONE_COMMIT_COMMITER_NAME}
|
|
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
|
|
scheduled:
|
|
steps:
|
|
- script:
|
|
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
|
|
- 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
|
|
- 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: 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
|
|
- 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 test-code-android
|
|
- 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:
|
|
- 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}> 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
|
|
nightly-release:
|
|
steps:
|
|
- script:
|
|
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
|
|
- script:
|
|
title: Configure AWS-CLI
|
|
inputs:
|
|
- content: |-
|
|
#!/bin/bash
|
|
apt-get install -y python-pip python-dev build-essential
|
|
pip install awscli
|
|
- 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: Log metrics
|
|
inputs:
|
|
- content: |-
|
|
#!/bin/bash
|
|
echo "Log binary size metrics to AWS CloudWatch:"
|
|
CLOUDWATCH=true platform/android/scripts/metrics.sh
|