version: 2 workflows: version: 2 default: jobs: - clang-tidy - android-debug-arm-v7 - android-release-all - node4-clang39-release - node6-clang39-release - node6-clang39-debug - linux-clang39-debug - linux-gcc4.9-debug - linux-gcc5-debug-coverage - linux-gcc5-release-qt4 - linux-gcc5-release-qt5 jobs: # ------------------------------------------------------------------------------ clang-tidy: docker: - image: mbgl/ci:r3-linux-clang-3.9 working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 6 BUILDTYPE: Debug branches: ignore: - master steps: - checkout - restore_cache: key: v1-clang-tidy paths: - node_modules - /root/.ccache - run: name: Fetch 'origin/master' branch command: git fetch origin master:refs/remotes/origin/master - run: name: Generate compilation database command: make compdb - run: name: Run Clang checks command: make check - save_cache: key: v1-clang-tidy paths: - node_modules - /root/.ccache # ------------------------------------------------------------------------------ android-debug-arm-v7: docker: - image: mbgl/ci:r3-android-ndk-r15-gradle working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 6 BUILDTYPE: Debug steps: - checkout - restore_cache: key: v1-android-debug-arm-v7 paths: - node_modules - /root/.ccache - run: name: Build libmapbox-gl.so for arm-v7 command: make android-lib-arm-v7 - run: name: Compile Core tests for arm-v7 command: make android-test-lib-arm-v7 - run: name: Test phone module command: make run-android-unit-test - run: name: Test wear module command: make run-android-wear-unit-test - run: name: Generate Espresso sanity tests command: make test-code-android - run: name: Check Java code style command: make android-checkstyle - run: name: Build Test APK command: | echo "${MAPBOX_DEVELOPER_CONFIG_XML}" > platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml make android-ui-test-arm-v7 - run: name: Log in to Google Cloud Platform shell: /bin/bash -euo pipefail command: | echo "${GCLOUD_SERVICE_ACCOUNT_JSON}" > secret.json gcloud auth activate-service-account --key-file secret.json --project android-gl-native rm secret.json - run: name: Run instrumentation tests on Firebase no_output_timeout: 1200 shell: /bin/bash -euo pipefail command: | gcloud firebase test android models list (gcloud firebase 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 \ --test-targets "package com.mapbox.mapboxsdk.testapp.style" 2>&1 | tee firebase.log) || EXIT_CODE=$? FIREBASE_TEST_BUCKET=$(sed -n 's|^.*\[https://console.developers.google.com/storage/browser/\([^]]*\).*|gs://\1|p' firebase.log) echo "Downloading from: ${FIREBASE_TEST_BUCKET}" gsutil -m cp -n -R -Z "$FIREBASE_TEST_BUCKET*" platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk 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 -I '{}' ${ANDROID_NDK_HOME}/ndk-stack -sym build/android-arm-v7/Debug -dump {} exit ${EXIT_CODE:-0} - save_cache: key: v1-android-debug-arm-v7 paths: - node_modules - /root/.ccache - store_artifacts: path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk destination: . # ------------------------------------------------------------------------------ android-release-all: docker: - image: mbgl/ci:r3-android-ndk-r15-gradle working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 6 BUILDTYPE: Release steps: - checkout - restore_cache: key: v1-android-release-all paths: - node_modules - /root/.ccache - run: name: Generate Maven credentials shell: /bin/bash -euo pipefail command: | 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 - run: name: Build package command: make apackage - store_artifacts: path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk destination: . - deploy: name: Show statistics command: | [ "${CIRCLE_BRANCH}" == "master" ] && export CLOUDWATCH=true platform/android/scripts/metrics.sh - deploy: name: Publish to Maven command: | if [ "${CIRCLE_BRANCH}" == "master" ]; then make run-android-upload-archives ; fi - save_cache: key: v1-android-release-all paths: - node_modules - /root/.ccache # ------------------------------------------------------------------------------ node4-clang39-release: docker: - image: mbgl/ci:r3-linux-clang-3.9-node-4 working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 6 BUILDTYPE: Release WITH_EGL: 1 PACKAGE_JSON_VERSION: $(node -e "console.log(require('./package.json').version)") PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true) DISPLAY: :0 steps: - checkout - restore_cache: key: v1-node4-clang39-release paths: - node_modules - /root/.ccache - run: name: Build node command: make node - run: name: Run node tests command: | source scripts/circle_setup.sh mapbox_install_logbt mapbox_install_apitrace mapbox_export_mesa_library_path xvfb-run --server-args="-screen 0 1024x768x24" \ ./logbt -- apitrace trace --api=egl -v make test-node - run: name: Publish node package when: on_success command: platform/node/scripts/after_success.sh - save_cache: key: v1-node4-clang39-release paths: - node_modules - /root/.ccache - store_artifacts: path: mapbox-gl-js/test/integration/render-tests/index.html destination: render-tests # ------------------------------------------------------------------------------ node6-clang39-release: docker: - image: mbgl/ci:r3-linux-clang-3.9 working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 6 BUILDTYPE: Release WITH_EGL: 1 PACKAGE_JSON_VERSION: $(node -e "console.log(require('./package.json').version)") PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true) DISPLAY: :0 steps: - checkout - restore_cache: key: v1-node6-clang39-release paths: - node_modules - /root/.ccache - run: name: Build node command: make node - run: name: Run node tests command: | source scripts/circle_setup.sh mapbox_install_logbt mapbox_install_apitrace mapbox_export_mesa_library_path xvfb-run --server-args="-screen 0 1024x768x24" \ ./logbt -- apitrace trace --api=egl -v make test-node - run: name: Publish node package when: on_success command: platform/node/scripts/after_success.sh - save_cache: key: v1-node6-clang39-release paths: - node_modules - /root/.ccache - store_artifacts: path: mapbox-gl-js/test/integration/render-tests/index.html destination: render-tests # ------------------------------------------------------------------------------ node6-clang39-debug: docker: - image: mbgl/ci:r3-linux-clang-3.9 working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 6 BUILDTYPE: Debug WITH_EGL: 1 PACKAGE_JSON_VERSION: $(node -e "console.log(require('./package.json').version)") PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true) DISPLAY: :0 steps: - checkout - restore_cache: key: v1-node6-clang39-debug paths: - node_modules - /root/.ccache - run: name: Build node command: make node - run: name: Run node tests command: | source scripts/circle_setup.sh mapbox_install_logbt mapbox_install_apitrace mapbox_export_mesa_library_path xvfb-run --server-args="-screen 0 1024x768x24" \ ./logbt -- apitrace trace --api=egl -v make test-node - run: name: Publish node package when: on_success command: platform/node/scripts/after_success.sh - save_cache: key: v1-node6-clang39-debug paths: - node_modules - /root/.ccache - store_artifacts: path: mapbox-gl-js/test/integration/render-tests/index.html destination: render-tests # ------------------------------------------------------------------------------ linux-clang39-debug: docker: - image: mbgl/ci:r3-linux-clang-3.9 working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 6 BUILDTYPE: Debug WITH_EGL: 1 DISPLAY: :0 steps: - checkout - restore_cache: key: v1-linux-clang39-debug paths: - node_modules - /root/.ccache - run: name: Build linux command: make linux - run: name: Build benchmark command: make benchmark - run: name: Build test command: make test - run: name: Run tests command: | source scripts/circle_setup.sh mapbox_export_mesa_library_path xvfb-run --server-args="-screen 0 1024x768x24" \ make run-test - save_cache: key: v1-linux-clang39-debug paths: - node_modules - /root/.ccache # ------------------------------------------------------------------------------ linux-gcc4.9-debug: docker: - image: mbgl/ci:r3-linux-gcc-4.9 working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 2 BUILDTYPE: Debug WITH_EGL: 1 WITH_CXX11ABI: 0 DISPLAY: :0 steps: - checkout - restore_cache: key: v1-linux-gcc4.9-debug paths: - node_modules - /root/.ccache - run: name: Build linux command: make linux - run: name: Build benchmark command: make benchmark - run: name: Build test command: make test - run: name: Run tests command: | source scripts/circle_setup.sh mapbox_export_mesa_library_path xvfb-run --server-args="-screen 0 1024x768x24" \ make run-test - save_cache: key: v1-linux-gcc4.9-debug paths: - node_modules - /root/.ccache # ------------------------------------------------------------------------------ linux-gcc5-debug-coverage: docker: - image: mbgl/ci:r3-linux-gcc-5 working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 2 BUILDTYPE: Debug WITH_EGL: 1 WITH_COVERAGE: 1 DISPLAY: :0 steps: - checkout - restore_cache: key: v1-linux-gcc5-debug-coverage paths: - node_modules - /root/.ccache - run: name: Build linux command: make linux - run: name: Build benchmark command: make benchmark - run: name: Build test command: make test - run: name: Run tests command: | source scripts/circle_setup.sh mapbox_export_mesa_library_path xvfb-run --server-args="-screen 0 1024x768x24" \ make run-test - run: name: Upload coverage results to coveralls command: | source scripts/circle_setup.sh platform/linux/scripts/coveralls.sh - save_cache: key: v1-linux-gcc5-debug-coverage paths: - node_modules - /root/.ccache # ------------------------------------------------------------------------------ linux-gcc5-release-qt4: docker: - image: mbgl/ci:r3-linux-gcc-5-qt-4 working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 2 # OOM, causing the compiler to crash. BUILDTYPE: Release GTEST_OUTPUT: xml LD_PRELOAD: /usr/lib/x86_64-linux-gnu/libjemalloc.so DISPLAY: 0 steps: - checkout - restore_cache: key: v1-linux-gcc5-release-qt4 paths: - node_modules - /root/.ccache - run: name: Build qt-app command: make qt-app - run: name: Build qt-test command: make qt-test - run: name: Run memory-load tests command: | source scripts/circle_setup.sh mapbox_export_mesa_library_path xvfb-run --server-args="-screen 0 1024x768x24" \ make run-qt-test-Memory.*:*.Load scripts/log_memory_benchmarks.sh test_detail.xml "Platform=Linux,Compiler=${_CC},Arch=$(uname -m)" - save_cache: key: v1-linux-gcc5-release-qt4 paths: - node_modules - /root/.ccache # ------------------------------------------------------------------------------ linux-gcc5-release-qt5: docker: - image: mbgl/ci:r3-linux-gcc-5-qt-5 working_directory: /src environment: LIBSYSCONFCPUS: 6 JOBS: 2 # OOM, causing the compiler to crash. BUILDTYPE: Release WITH_QT_I18N: 1 DISPLAY: 0 steps: - checkout - restore_cache: key: v1-linux-gcc5-release-qt5 paths: - node_modules - /root/.ccache - run: name: Build qt-app command: make qt-app - run: name: Build qt-test command: make qt-test - run: name: Build qt-docs command: make qt-docs - run: name: Run valgrind-backed tests environment: JOBS: 1 # https://github.com/mapbox/mapbox-gl-native/issues/9108 command: | source scripts/circle_setup.sh mapbox_export_mesa_library_path xvfb-run --server-args="-screen 0 1024x768x24" \ scripts/valgrind.sh build/qt-linux-x86_64/Release/mbgl-test --gtest_filter=-*.Load --gtest_filter=-Memory.Vector - save_cache: key: v1-linux-gcc5-release-qt5 paths: - node_modules - /root/.ccache