These jobs have a low incidence of unique meaningful failures and are mostly just informational, so running them less often preserves most of their value and frees up relatively scarce CircleCI macOS concurrency.
1132 lines
35 KiB
YAML
1132 lines
35 KiB
YAML
version: 2
|
|
|
|
workflows:
|
|
version: 2
|
|
default:
|
|
jobs:
|
|
- nitpick
|
|
- clang-tidy:
|
|
filters:
|
|
branches:
|
|
ignore: master
|
|
- android-debug-arm-v7
|
|
- android-release:
|
|
filters:
|
|
tags:
|
|
only: /android-v.*/
|
|
- node-clang39-release:
|
|
filters:
|
|
tags:
|
|
only: /node-.*/
|
|
- node-gcc6-debug:
|
|
filters:
|
|
tags:
|
|
only: /node-.*/
|
|
- node-macos-release:
|
|
filters:
|
|
tags:
|
|
only: /node-.*/
|
|
- linux-clang-3.8-libcxx-debug
|
|
- linux-clang4-sanitize-address
|
|
- linux-clang4-sanitize-undefined
|
|
- linux-clang4-sanitize-thread
|
|
- linux-gcc4.9-debug
|
|
- linux-gcc5-debug-coverage
|
|
- ios-debug
|
|
- ios-release
|
|
- ios-release-tag:
|
|
filters:
|
|
tags:
|
|
only: /ios-.*/
|
|
branches:
|
|
ignore: /.*/
|
|
- macos-debug
|
|
- qt4-linux-gcc5-release
|
|
- qt5-linux-gcc5-release
|
|
- qt5-macos-debug
|
|
nightly:
|
|
triggers:
|
|
- schedule:
|
|
cron: "0 5 * * *"
|
|
filters:
|
|
branches:
|
|
only:
|
|
- master
|
|
jobs:
|
|
- ios-release
|
|
- ios-sanitize
|
|
- ios-sanitize-address
|
|
- ios-static-analyzer
|
|
|
|
step-library:
|
|
- &npm-install
|
|
run:
|
|
name: npm install
|
|
command: npm install --ignore-scripts
|
|
- &prepare-environment
|
|
run:
|
|
name: Prepare environment
|
|
command: touch "$BASH_ENV" && ./scripts/environment.js | tee -a "$BASH_ENV"
|
|
- &prepare-ccache
|
|
run:
|
|
name: Prepare ccache
|
|
command: |
|
|
# CircleCI doesn't have any way to embed arbitrary environment variables or command output
|
|
# into cache keys, so we're using the workaround of writing the desired content to a file,
|
|
# and then using `{{ checksum "filename" }}` in the cache key.
|
|
echo "$CIRCLE_BRANCH"
|
|
echo "$CIRCLE_BRANCH" > .circle-branch
|
|
echo "$CIRCLE_SHA1"
|
|
echo "$CIRCLE_SHA1" > .circle-sha1
|
|
echo "$CIRCLE_TARGET_BRANCH"
|
|
echo "${CIRCLE_TARGET_BRANCH:master}" > .circle-target-branch
|
|
echo "$CIRCLE_MERGE_BASE"
|
|
echo "${CIRCLE_MERGE_BASE:master}" > .circle-merge-base
|
|
ccache --clear
|
|
- &reset-ccache-stats
|
|
run:
|
|
name: Clear ccache statistics
|
|
command: |
|
|
ccache --zero-stats
|
|
ccache --max-size=2G
|
|
ccache --show-stats
|
|
- &show-ccache-stats
|
|
run:
|
|
name: Show ccache statistics
|
|
command: ccache --show-stats
|
|
|
|
|
|
- &save-node_modules-cache
|
|
save_cache:
|
|
name: Save node_modules cache
|
|
key: 'node_modules/v1/{{ arch }}/{{ checksum "package.json" }}'
|
|
paths: [ "node_modules" ]
|
|
- &restore-node_modules-cache
|
|
restore_cache:
|
|
name: Restore node_modules cache
|
|
keys:
|
|
- 'node_modules/v1/{{ arch }}/{{ checksum "package.json" }}'
|
|
- 'node_modules/v1/{{ arch }}'
|
|
- &save-mason_packages-cache
|
|
save_cache:
|
|
name: Save mason_packages cache
|
|
key: 'mason_packages/v3/{{ arch }}/{{ checksum "cmake/mason-dependencies.cmake" }}'
|
|
paths: [ "mason_packages/.binaries" ]
|
|
- &restore-mason_packages-cache
|
|
restore_cache:
|
|
name: Restore mason_packages cache
|
|
keys:
|
|
- 'mason_packages/v3/{{ arch }}/{{ checksum "cmake/mason-dependencies.cmake" }}'
|
|
- 'mason_packages/v3/{{ arch }}'
|
|
- &save-ccache
|
|
save_cache:
|
|
name: Save ccache
|
|
key: 'ccache/v1/{{ arch }}/{{ .Environment.CIRCLE_JOB }}/{{ checksum ".circle-branch" }}/{{ checksum ".circle-sha1" }}'
|
|
paths: [ "~/.ccache" ]
|
|
- &restore-ccache
|
|
restore_cache:
|
|
name: Restore ccache
|
|
keys:
|
|
- 'ccache/v1/{{ arch }}/{{ .Environment.CIRCLE_JOB }}/{{ checksum ".circle-branch" }}/{{ checksum ".circle-sha1" }}'
|
|
- 'ccache/v1/{{ arch }}/{{ .Environment.CIRCLE_JOB }}/{{ checksum ".circle-branch" }}'
|
|
- 'ccache/v1/{{ arch }}/{{ .Environment.CIRCLE_JOB }}/{{ checksum ".circle-target-branch" }}/{{ checksum ".circle-merge-base" }}'
|
|
- 'ccache/v1/{{ arch }}/{{ .Environment.CIRCLE_JOB }}/{{ checksum ".circle-target-branch" }}'
|
|
- 'ccache/v1/{{ arch }}/{{ .Environment.CIRCLE_JOB }}'
|
|
- &save-gradle-cache
|
|
save_cache:
|
|
name: Save gradle cache
|
|
key: 'gradle/v1/{{ checksum "platform/android/gradle/dependencies.gradle" }}/{{ checksum "platform/android/build.gradle" }}/{{ checksum "platform/android/gradle/wrapper/gradle-wrapper.properties" }}'
|
|
paths: [ "/root/.gradle" ]
|
|
- &restore-gradle-cache
|
|
restore_cache:
|
|
name: Restore gradle cache
|
|
keys:
|
|
- 'gradle/v1/{{ checksum "platform/android/gradle/dependencies.gradle" }}/{{ checksum "platform/android/build.gradle" }}/{{ checksum "platform/android/gradle/wrapper/gradle-wrapper.properties" }}'
|
|
- 'gradle/v1'
|
|
|
|
|
|
- &setup-llvm-symbolizer
|
|
run:
|
|
name: Environment Setup
|
|
command: |
|
|
# LLVM has a hard check for "llvm-symbolizer" and doesn't support suffixed executables
|
|
ln -s /usr/bin/llvm-symbolizer-* /usr/bin/llvm-symbolizer
|
|
# We'll use tee to redirect stderr to a file so we can check for sanitiziation
|
|
# https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1059947
|
|
sed -i 's/"$@" 2>&1/"$@"/' /usr/bin/xvfb-run
|
|
|
|
|
|
- &build-node
|
|
run:
|
|
name: Build node
|
|
command: make node-all
|
|
- &build-linux
|
|
run:
|
|
name: Build linux
|
|
command: make linux
|
|
- &build-benchmark
|
|
run:
|
|
name: Build benchmark
|
|
command: make benchmark
|
|
- &build-test
|
|
run:
|
|
name: Build test
|
|
command: make test
|
|
- &build-qt-app
|
|
run:
|
|
name: Build qt-app
|
|
command: make qt-app
|
|
- &build-qt-test
|
|
run:
|
|
name: Build qt-test
|
|
command: make qt-test
|
|
- &build-ios-test
|
|
run:
|
|
name: Build ios-test
|
|
command: make ios-test
|
|
- &build-ios-integration-test
|
|
run:
|
|
name: Build ios-integration-test
|
|
command: make ios-integration-test
|
|
- &build-macos-test
|
|
run:
|
|
name: Build and run macOS tests
|
|
command: make run-test
|
|
|
|
|
|
- &check-public-symbols
|
|
run:
|
|
name: Check public symbols
|
|
command: make check-public-symbols
|
|
|
|
|
|
- &install-ios-packaging-dependencies
|
|
run:
|
|
name: Install iOS packaging dependencies
|
|
command: brew install awscli wget
|
|
background: true
|
|
|
|
- &install-macos-dependencies
|
|
run:
|
|
name: Install macOS dependencies
|
|
command: |
|
|
brew install cmake ccache
|
|
|
|
- &install-node-macos-dependencies
|
|
run:
|
|
name: Install Node macOS dependencies
|
|
command: |
|
|
brew install node@6
|
|
brew link node@6 --force --overwrite
|
|
|
|
- &install-qt-macos-dependencies
|
|
run:
|
|
name: Install Qt macOS dependencies
|
|
command: |
|
|
brew install qt
|
|
brew link qt --force
|
|
export HOMEBREW_QT5_CELLAR=$(brew --cellar qt)
|
|
export HOMEBREW_QT5_VERSION=$(brew list --versions qt | rev | cut -d' ' -f1 | rev)
|
|
sudo ln -s $HOMEBREW_QT5_CELLAR/$HOMEBREW_QT5_VERSION/mkspecs /usr/local/mkspecs
|
|
sudo ln -s $HOMEBREW_QT5_CELLAR/$HOMEBREW_QT5_VERSION/plugins /usr/local/plugins
|
|
|
|
- &run-node-macos-tests
|
|
run:
|
|
name: Run node tests
|
|
command: make test-node
|
|
|
|
- &run-node-linux-tests
|
|
run:
|
|
name: Run node tests
|
|
command: |
|
|
xvfb-run --server-args="-screen 0 1024x768x24" \
|
|
logbt -- apitrace trace --api=egl -v make test-node
|
|
|
|
- &run-node-linux-tests-recycle-map
|
|
run:
|
|
name: Run node tests (recycling the map object)
|
|
command: |
|
|
xvfb-run --server-args="-screen 0 1024x768x24" \
|
|
logbt -- apitrace trace --api=egl -v make test-node-recycle-map
|
|
|
|
- &run-unit-tests
|
|
run:
|
|
name: Run tests
|
|
command: |
|
|
xvfb-run --server-args="-screen 0 1024x768x24" \
|
|
make run-test
|
|
|
|
|
|
- &publish-node-package
|
|
run:
|
|
name: Publish node package
|
|
when: on_success
|
|
command: platform/node/scripts/publish.sh
|
|
|
|
|
|
- &upload-render-tests
|
|
store_artifacts:
|
|
path: mapbox-gl-js/test/integration/render-tests/index.html
|
|
destination: render-tests
|
|
- &upload-render-tests-recycle-map
|
|
store_artifacts:
|
|
path: mapbox-gl-js/test/integration/render-tests/index-recycle-map.html
|
|
destination: render-tests
|
|
|
|
- &collect-xcode-build-logs
|
|
run:
|
|
name: Collect Xcode build logs
|
|
when: always
|
|
command: |
|
|
export XCODE_LOG_DIR=build/logs
|
|
mkdir -p $XCODE_LOG_DIR
|
|
cp build/*.log $XCODE_LOG_DIR
|
|
- &upload-xcode-build-logs
|
|
store_artifacts:
|
|
path: build/logs
|
|
|
|
jobs:
|
|
nitpick:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:base
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Debug
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- run:
|
|
name: Initialize submodule
|
|
command: git submodule update --init mapbox-gl-js
|
|
- run:
|
|
name: Verify submodule pin
|
|
command: scripts/nitpick/submodule-pin.js
|
|
when: always
|
|
- run:
|
|
name: CMake file list generation
|
|
command: scripts/nitpick/generated-code.js cmake
|
|
when: always
|
|
- run:
|
|
name: Shader code generation
|
|
command: scripts/nitpick/generated-code.js shader
|
|
when: always
|
|
- run:
|
|
name: Style code generation
|
|
command: scripts/nitpick/generated-code.js style
|
|
when: always
|
|
- run:
|
|
name: Android code generation
|
|
command: scripts/nitpick/generated-code.js android
|
|
when: always
|
|
- run:
|
|
name: Vendored packages
|
|
command: scripts/nitpick/vendoring.js
|
|
when: always
|
|
|
|
|
|
# ------------------------------------------------------------------------------
|
|
clang-tidy:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-clang-3.9
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Debug
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- 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
|
|
no_output_timeout: 20m
|
|
- *show-ccache-stats
|
|
- *save-ccache
|
|
|
|
# ------------------------------------------------------------------------------
|
|
android-debug-arm-v7:
|
|
docker:
|
|
- image: mbgl/feb0443038:android-ndk-r17
|
|
resource_class: large
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Debug
|
|
IS_LOCAL_DEVELOPMENT: false
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *restore-gradle-cache
|
|
- *reset-ccache-stats
|
|
- run:
|
|
name: Check code style
|
|
command: make android-check
|
|
- 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: Generate Espresso sanity tests
|
|
command: make test-code-android
|
|
- run:
|
|
name: Build Test APK
|
|
command: |
|
|
if [ -n "${MAPBOX_DEVELOPER_CONFIG_XML}" ]; then
|
|
echo "${MAPBOX_DEVELOPER_CONFIG_XML}" > platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml
|
|
make android-ui-test-arm-v7
|
|
fi
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *save-gradle-cache
|
|
- run:
|
|
name: Log in to Google Cloud Platform
|
|
command: |
|
|
if [ -n "${GCLOUD_SERVICE_ACCOUNT_JSON}" ]; then
|
|
echo "${GCLOUD_SERVICE_ACCOUNT_JSON}" > secret.json
|
|
gcloud auth activate-service-account --key-file secret.json --project android-gl-native
|
|
rm secret.json
|
|
fi
|
|
- run:
|
|
name: Run instrumentation tests on Firebase
|
|
no_output_timeout: 1200
|
|
command: |
|
|
if [ -n "${GCLOUD_SERVICE_ACCOUNT_JSON}" ]; then
|
|
gcloud firebase test android models list
|
|
gcloud firebase test android run --type instrumentation \
|
|
--app platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/debug/MapboxGLAndroidSDKTestApp-debug.apk \
|
|
--test platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/androidTest/debug/MapboxGLAndroidSDKTestApp-debug-androidTest.apk \
|
|
--device-ids sailfish --os-version-ids 26 --locales en --orientations portrait --timeout 20m
|
|
fi
|
|
- run:
|
|
name: gzip debugable .so files
|
|
command: |
|
|
gzip platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/debug/obj/armeabi-v7a/libmapbox-gl.so
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/debug/obj/armeabi-v7a/libmapbox-gl.so.gz
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/debug
|
|
destination: .
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDK/build/reports/lint-results.html
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDK/build/reports/lint-results.xml
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDK/lint-baseline.xml
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDKTestApp/build/reports/lint-results.html
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDKTestApp/build/reports/lint-results.xml
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDKTestApp/lint-baseline.xml
|
|
|
|
# ------------------------------------------------------------------------------
|
|
android-release:
|
|
docker:
|
|
- image: mbgl/feb0443038:android-ndk-r17
|
|
resource_class: large
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Release
|
|
IS_LOCAL_DEVELOPMENT: false
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *restore-gradle-cache
|
|
- *reset-ccache-stats
|
|
- run:
|
|
name: Generate Maven credentials
|
|
command: |
|
|
if [ -n "${PUBLISH_NEXUS_USERNAME}" ]; then
|
|
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
|
|
fi
|
|
- run:
|
|
name: Update version name
|
|
command: |
|
|
if [[ $CIRCLE_TAG == android-v* ]]; then
|
|
sed -i -e "s/^VERSION_NAME=.*/VERSION_NAME=${CIRCLE_TAG:9}/" platform/android/MapboxGLAndroidSDK/gradle.properties
|
|
fi
|
|
- run:
|
|
name: Build package
|
|
command: make apackage
|
|
- run:
|
|
name: Build release Test App
|
|
command: make android
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *save-gradle-cache
|
|
- run:
|
|
name: gzip debugable .so files
|
|
command: |
|
|
gzip platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/arm64-v8a/libmapbox-gl.so && \
|
|
gzip platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/armeabi-v7a/libmapbox-gl.so && \
|
|
gzip platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/x86/libmapbox-gl.so && \
|
|
gzip platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/x86_64/libmapbox-gl.so
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/release
|
|
destination: .
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/arm64-v8a/libmapbox-gl.so.gz
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/armeabi-v7a/libmapbox-gl.so.gz
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/x86/libmapbox-gl.so.gz
|
|
- store_artifacts:
|
|
path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/x86_64/libmapbox-gl.so.gz
|
|
- run:
|
|
name: Record size
|
|
command: platform/android/scripts/metrics.sh
|
|
- deploy:
|
|
name: Publish to Maven
|
|
command: |
|
|
if [[ $CIRCLE_BRANCH == master ]] || [[ $CIRCLE_BRANCH == release-* ]] || [[ $CIRCLE_TAG == android-v* ]]; then
|
|
make run-android-upload-archives
|
|
fi
|
|
|
|
# ------------------------------------------------------------------------------
|
|
node-clang39-release:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-clang-3.9
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: RelWithDebInfo
|
|
WITH_EGL: 1
|
|
WITH_CXX11ABI: 0
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-node
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *run-node-linux-tests
|
|
- *publish-node-package
|
|
- *upload-render-tests
|
|
|
|
# ------------------------------------------------------------------------------
|
|
node-gcc6-debug:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-gcc-6
|
|
resource_class: large
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Debug
|
|
WITH_EGL: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-node
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *run-node-linux-tests-recycle-map
|
|
- *publish-node-package
|
|
- *upload-render-tests-recycle-map
|
|
|
|
# ------------------------------------------------------------------------------
|
|
node-macos-release:
|
|
macos:
|
|
xcode: "9.4.1"
|
|
environment:
|
|
BUILDTYPE: RelWithDebInfo
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *install-macos-dependencies
|
|
- *install-node-macos-dependencies
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-node
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *run-node-macos-tests
|
|
- *publish-node-package
|
|
- *upload-render-tests
|
|
- *collect-xcode-build-logs
|
|
- *upload-xcode-build-logs
|
|
|
|
# ------------------------------------------------------------------------------
|
|
linux-clang-3.8-libcxx-debug:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-clang-3.8-libcxx
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Debug
|
|
WITH_EGL: 1
|
|
WITH_CXX11ABI: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-linux
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
|
|
# ------------------------------------------------------------------------------
|
|
linux-clang4-sanitize-address:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-clang-4
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Sanitize
|
|
WITH_EGL: 1
|
|
GDB: '' # Do not run with GDB
|
|
CXXFLAGS: -fsanitize=address
|
|
LDFLAGS: -fsanitize=address
|
|
ASAN_OPTIONS: detect_leaks=0:color=always:print_summary=1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *setup-llvm-symbolizer
|
|
- *build-test
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- run:
|
|
name: Run tests
|
|
command: |
|
|
xvfb-run --server-args="-screen 0 1024x768x24" make run-test 2> >(tee sanitizer 1>&2)
|
|
# Unfortunately, Google Test eats the status code, so we'll have to check the output.
|
|
[ -z "$(sed -n '/^SUMMARY: AddressSanitizer:/p' sanitizer)" ]
|
|
|
|
# ------------------------------------------------------------------------------
|
|
linux-clang4-sanitize-undefined:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-clang-4
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Sanitize
|
|
WITH_EGL: 1
|
|
GDB: '' # Do not run with GDB
|
|
CXXFLAGS: -fsanitize=undefined
|
|
LDFLAGS: -fsanitize=undefined
|
|
UBSAN_OPTIONS: print_stacktrace=1:color=always:print_summary=1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *setup-llvm-symbolizer
|
|
- *build-test
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- run:
|
|
name: Run tests
|
|
command: |
|
|
xvfb-run --server-args="-screen 0 1024x768x24" make run-test 2> >(tee sanitizer 1>&2)
|
|
# Unfortunately, Google Test eats the status code, so we'll have to check the output.
|
|
[ -z "$(sed -n '/^SUMMARY: UndefinedBehaviorSanitizer:/p' sanitizer)" ]
|
|
|
|
# ------------------------------------------------------------------------------
|
|
linux-clang4-sanitize-thread:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-clang-4
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Sanitize
|
|
WITH_EGL: 1
|
|
GDB: '' # Do not run with GDB
|
|
CXXFLAGS: -fsanitize=thread
|
|
LDFLAGS: -fsanitize=thread
|
|
TSAN_OPTIONS: color=always:print_summary=1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *setup-llvm-symbolizer
|
|
- *build-test
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- run:
|
|
name: Run tests
|
|
command: |
|
|
xvfb-run --server-args="-screen 0 1024x768x24" make run-test 2> >(tee sanitizer 1>&2)
|
|
# Unfortunately, Google Test eats the status code, so we'll have to check the output.
|
|
[ -z "$(sed -n '/^SUMMARY: ThreadSanitizer:/p' sanitizer)" ]
|
|
|
|
# ------------------------------------------------------------------------------
|
|
linux-gcc4.9-debug:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-gcc-4.9
|
|
resource_class: large
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Debug
|
|
WITH_EGL: 1
|
|
WITH_CXX11ABI: 0
|
|
DISPLAY: :0
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-linux
|
|
- *build-benchmark
|
|
- *build-test
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *run-unit-tests
|
|
|
|
# ------------------------------------------------------------------------------
|
|
linux-gcc5-debug-coverage:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-gcc-5
|
|
resource_class: large
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Debug
|
|
WITH_EGL: 1
|
|
WITH_COVERAGE: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-linux
|
|
- *build-benchmark
|
|
- *build-test
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *run-unit-tests
|
|
- run:
|
|
name: Upload coverage results to coveralls
|
|
command: |
|
|
platform/linux/scripts/coveralls.sh
|
|
|
|
# ------------------------------------------------------------------------------
|
|
ios-debug:
|
|
macos:
|
|
xcode: "9.4.1"
|
|
environment:
|
|
BUILDTYPE: Debug
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *install-macos-dependencies
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-ios-test
|
|
- *build-ios-integration-test
|
|
- *check-public-symbols
|
|
- run:
|
|
name: Lint plist files
|
|
command: make ios-lint
|
|
- run:
|
|
name: Nitpick Darwin code generation
|
|
command: scripts/nitpick/generated-code.js darwin
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *collect-xcode-build-logs
|
|
- *upload-xcode-build-logs
|
|
|
|
# ------------------------------------------------------------------------------
|
|
ios-sanitize:
|
|
macos:
|
|
xcode: "9.4.1"
|
|
environment:
|
|
BUILDTYPE: Debug
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *install-macos-dependencies
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- run:
|
|
name: Build and run SDK unit tests with thread and undefined behavior sanitizers
|
|
command: make ios-sanitize
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *collect-xcode-build-logs
|
|
- *upload-xcode-build-logs
|
|
|
|
# ------------------------------------------------------------------------------
|
|
ios-sanitize-address:
|
|
macos:
|
|
xcode: "9.4.1"
|
|
environment:
|
|
BUILDTYPE: Debug
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *install-macos-dependencies
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- run:
|
|
name: Build and run SDK unit tests with address sanitizer
|
|
command: make ios-sanitize-address
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *collect-xcode-build-logs
|
|
- *upload-xcode-build-logs
|
|
|
|
# ------------------------------------------------------------------------------
|
|
ios-static-analyzer:
|
|
macos:
|
|
xcode: "9.4.1"
|
|
environment:
|
|
BUILDTYPE: Debug
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *install-macos-dependencies
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- run:
|
|
name: Build and run SDK unit tests with the static analyzer
|
|
command: make ios-static-analyzer
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *collect-xcode-build-logs
|
|
- *upload-xcode-build-logs
|
|
|
|
# ------------------------------------------------------------------------------
|
|
ios-release:
|
|
macos:
|
|
xcode: "9.4.1"
|
|
environment:
|
|
BUILDTYPE: Release
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *install-macos-dependencies
|
|
- *install-ios-packaging-dependencies
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- run:
|
|
name: Build dynamic framework for device and simulator
|
|
command: make iframework
|
|
- deploy:
|
|
name: Upload nightly build to s3
|
|
command: |
|
|
if [[ -z $CIRCLE_COMPARE_URL && $CIRCLE_BRANCH == master ]]; then
|
|
platform/ios/scripts/deploy-nightly.sh
|
|
fi
|
|
- run:
|
|
name: Record size
|
|
command: platform/ios/scripts/metrics.sh
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *collect-xcode-build-logs
|
|
- *upload-xcode-build-logs
|
|
|
|
# ------------------------------------------------------------------------------
|
|
ios-release-tag:
|
|
macos:
|
|
xcode: "9.4.1"
|
|
environment:
|
|
BUILDTYPE: Release
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *install-macos-dependencies
|
|
- *install-ios-packaging-dependencies
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- run:
|
|
name: Build, package, and upload iOS release
|
|
command: |
|
|
export VERSION_TAG=${CIRCLE_TAG}
|
|
export GITHUB_TOKEN=${DANGER_GITHUB_API_TOKEN}
|
|
platform/ios/scripts/deploy-packages.sh
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- *collect-xcode-build-logs
|
|
- *upload-xcode-build-logs
|
|
|
|
# ------------------------------------------------------------------------------
|
|
macos-debug:
|
|
macos:
|
|
xcode: "9.4.1"
|
|
environment:
|
|
BUILDTYPE: Debug
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *install-macos-dependencies
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-macos-test
|
|
- *check-public-symbols
|
|
- run:
|
|
name: Lint plist files
|
|
command: make macos-lint
|
|
- run:
|
|
name: Nitpick Darwin code generation
|
|
command: scripts/nitpick/generated-code.js darwin
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- store_artifacts:
|
|
path: test/fixtures
|
|
destination: test/fixtures
|
|
- *collect-xcode-build-logs
|
|
- *upload-xcode-build-logs
|
|
|
|
# ------------------------------------------------------------------------------
|
|
qt4-linux-gcc5-release:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-gcc-5-qt-4
|
|
resource_class: large
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Release
|
|
GTEST_OUTPUT: xml
|
|
LD_PRELOAD: /usr/lib/x86_64-linux-gnu/libjemalloc.so
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-qt-app
|
|
- *build-qt-test
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- run:
|
|
name: Run memory-load tests
|
|
command: |
|
|
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)"
|
|
|
|
# ------------------------------------------------------------------------------
|
|
qt5-linux-gcc5-release:
|
|
docker:
|
|
- image: mbgl/7d2403f42e:linux-gcc-5-qt-5.9
|
|
resource_class: large
|
|
working_directory: /src
|
|
environment:
|
|
LIBSYSCONFCPUS: 4
|
|
JOBS: 4
|
|
BUILDTYPE: Release
|
|
WITH_QT_I18N: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-qt-app
|
|
- *build-qt-test
|
|
- run:
|
|
name: Build qt-docs
|
|
command: make qt-docs
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- run:
|
|
name: Run valgrind-backed tests
|
|
environment:
|
|
JOBS: 1 # https://github.com/mapbox/mapbox-gl-native/issues/9108
|
|
command: |
|
|
xvfb-run --server-args="-screen 0 1024x768x24" \
|
|
build/qt-linux-x86_64/Release/mbgl-test --gtest_filter=-*.Load --gtest_filter=-Memory.Vector
|
|
|
|
# ------------------------------------------------------------------------------
|
|
qt5-macos-debug:
|
|
macos:
|
|
xcode: "9.3.0"
|
|
environment:
|
|
BUILDTYPE: Debug
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
steps:
|
|
- checkout
|
|
- *restore-node_modules-cache
|
|
- *npm-install
|
|
- *prepare-environment
|
|
- *install-macos-dependencies
|
|
- *install-qt-macos-dependencies
|
|
- *prepare-ccache
|
|
- *restore-mason_packages-cache
|
|
- *restore-ccache
|
|
- *reset-ccache-stats
|
|
- *build-qt-app
|
|
- *build-qt-test
|
|
- run:
|
|
name: Run qt-test
|
|
command: make run-qt-test
|
|
- *show-ccache-stats
|
|
- *save-node_modules-cache
|
|
- *save-mason_packages-cache
|
|
- *save-ccache
|
|
- store_artifacts:
|
|
path: test/fixtures
|
|
destination: test/fixtures
|