summaryrefslogtreecommitdiff
path: root/platform/android/bitrise.yml
blob: d477846917eaf2b61fd7fcf80c8aad12ca6a65fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
---
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: "*"
  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: Build
        run_if: '{{enveq "SKIPCI" "false"}}'
        inputs:
        - content: |-
            #!/bin/bash
            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"
            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
    - script:
        title: Download test results
        is_always_run: true
        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:
        inputs:
        - deploy_path: "platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk"
        - notify_user_groups: none
        - is_compress: 'true'
    - script:
        title: Run ndk-stack
        is_always_run: true
        inputs:
        - content: |-
            #!/bin/bash
            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
    - slack:
        title: Post to Slack
        run_if: '{{enveq "SKIPCI" "false"}}'
        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: Build
        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
            pip install awscli

            aws s3 cp s3://mapbox/android/signing-credentials/secring.gpg platform/android/MapboxGLAndroidSDK/secring.gpg

            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

            export BUILDTYPE=Release
            make apackage

            cd platform/android
            ./gradlew uploadArchives
  devicefarmUpload:
    steps:
    - script:
        title: Build
        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
            AWS_SECRET_ACCESS_KEY_DEVICE_FARM=$AWS_SECRET_ACCESS_KEY_DEVICE_FARM"
            >> platform/android/MapboxGLAndroidSDK/gradle.properties

            export BUILDTYPE=Release
            make apackage
            
            make android-generate-test
            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