[build] Update CircleCI config for new repo
This commit is contained in:
809
circle.yml
809
circle.yml
@@ -2,123 +2,6 @@ version: 2.1
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
mbgl-next:
|
||||
jobs:
|
||||
- next-sanity-checks
|
||||
- next-build-template:
|
||||
name: next-android-armeabi-v7a-release
|
||||
executor_name: ubuntu-disco
|
||||
target_is_android: true
|
||||
config_params: '-G Ninja -DCMAKE_TOOLCHAIN_FILE=/opt/android/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_CCACHE=/usr/bin/ccache -DANDROID_ABI=armeabi-v7a'
|
||||
- next-build-template:
|
||||
name: next-android-arm64-v8a-release
|
||||
executor_name: ubuntu-disco
|
||||
target_is_android: true
|
||||
requires:
|
||||
- next-android-armeabi-v7a-release
|
||||
config_params: '-G Ninja -DCMAKE_TOOLCHAIN_FILE=/opt/android/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_CCACHE=/usr/bin/ccache -DANDROID_ABI=arm64-v8a'
|
||||
- next-build-template:
|
||||
name: next-android-x86-release
|
||||
executor_name: ubuntu-disco
|
||||
target_is_android: true
|
||||
requires:
|
||||
- next-android-armeabi-v7a-release
|
||||
config_params: '-G Ninja -DCMAKE_TOOLCHAIN_FILE=/opt/android/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_CCACHE=/usr/bin/ccache -DANDROID_ABI=x86'
|
||||
- next-build-template:
|
||||
name: next-android-x86_64-release
|
||||
executor_name: ubuntu-disco
|
||||
target_is_android: true
|
||||
requires:
|
||||
- next-android-armeabi-v7a-release
|
||||
config_params: '-G Ninja -DCMAKE_TOOLCHAIN_FILE=/opt/android/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_CCACHE=/usr/bin/ccache -DANDROID_ABI=x86_64'
|
||||
- next-build-template:
|
||||
name: next-linux-gcc8-release
|
||||
executor_name: ubuntu-disco
|
||||
target_is_linux: true
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8'
|
||||
- next-build-template:
|
||||
name: next-linux-gcc4.9-release
|
||||
executor_name: ubuntu-disco
|
||||
target_is_linux: true
|
||||
requires:
|
||||
- next-linux-gcc8-release
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=gcc-4.9 -DCMAKE_CXX_COMPILER=g++-4.9'
|
||||
build_params: '--target mbgl-glfw'
|
||||
test_params: '-N -Q'
|
||||
- next-build-template:
|
||||
name: next-linux-gcc8-debug-coverage
|
||||
executor_name: ubuntu-disco
|
||||
target_is_linux: true
|
||||
requires:
|
||||
- next-linux-gcc8-release
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 -DCMAKE_BUILD_TYPE=DebugCoverage'
|
||||
- next-build-template:
|
||||
name: next-linux-clang8-release
|
||||
executor_name: ubuntu-disco
|
||||
target_is_linux: true
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8'
|
||||
- next-build-template:
|
||||
name: next-FIXME-linux-asan
|
||||
executor_name: ubuntu-disco
|
||||
target_is_linux: true
|
||||
requires:
|
||||
- next-sanity-checks
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=address'
|
||||
test_params: '|| true'
|
||||
- next-build-template:
|
||||
name: next-linux-tsan
|
||||
executor_name: ubuntu-disco
|
||||
target_is_linux: true
|
||||
requires:
|
||||
- next-sanity-checks
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=thread'
|
||||
- next-build-template:
|
||||
name: next-FIXME-linux-memsan
|
||||
executor_name: ubuntu-disco
|
||||
target_is_linux: true
|
||||
requires:
|
||||
- next-sanity-checks
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=memory'
|
||||
test_params: '|| true'
|
||||
- next-build-template:
|
||||
name: next-FIXME-linux-ubsan
|
||||
executor_name: ubuntu-disco
|
||||
target_is_linux: true
|
||||
requires:
|
||||
- next-sanity-checks
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=undefined'
|
||||
test_params: '|| true'
|
||||
- next-build-template:
|
||||
name: next-qt5-linux-gcc5-release
|
||||
executor_name: ubuntu-disco
|
||||
target_is_linux: true
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=gcc-5 -DCMAKE_CXX_COMPILER=g++-5 -DMBGL_WITH_QT=ON'
|
||||
- next-build-template:
|
||||
name: next-qt5-macos-gcc5-release
|
||||
executor_name: macos-11_0_0
|
||||
target_is_macos: true
|
||||
requires:
|
||||
- next-qt5-linux-gcc5-release
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DMBGL_WITH_QT=ON -DCMAKE_PREFIX_PATH=$(echo /usr/local/Cellar/qt/5.*/lib/cmake)'
|
||||
test_params: '-N -Q'
|
||||
- next-build-template:
|
||||
name: next-macos-xcode11-release
|
||||
executor_name: macos-11_0_0
|
||||
target_is_macos: true
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache'
|
||||
- next-build-template:
|
||||
name: next-macos-xcode11-debug
|
||||
executor_name: macos-11_0_0
|
||||
target_is_macos: true
|
||||
requires:
|
||||
- next-macos-xcode11-release
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Debug'
|
||||
- next-build-template:
|
||||
name: next-ios-xcode11-release
|
||||
executor_name: macos-11_0_0
|
||||
target_is_macos: true
|
||||
config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_SYSROOT=iphonesimulator'
|
||||
test_params: '-Q -N'
|
||||
mbgl-legacy:
|
||||
jobs:
|
||||
#
|
||||
@@ -129,28 +12,6 @@ workflows:
|
||||
# unique aspect of the build environment.
|
||||
# - {build type} is typically "debug" or "release".
|
||||
#
|
||||
- android-debug-arm-v7-buck
|
||||
- android-arm-template:
|
||||
name: android-debug-arm-v8
|
||||
- android-arm-template:
|
||||
name: android-gnustl-arm-v7
|
||||
stl: gnustl_shared
|
||||
firebase_device_id: "flo"
|
||||
firebase_device_os: "21"
|
||||
image: android-ndk-r17c:1d5db0eb34
|
||||
abi: arm-v7
|
||||
- android-release:
|
||||
filters:
|
||||
tags:
|
||||
only: /android-v.*/
|
||||
- node-macos-release:
|
||||
filters:
|
||||
tags:
|
||||
only: /node-.*/
|
||||
- linux-clang-7-sanitize-address-undefined
|
||||
- linux-clang-7-sanitize-thread
|
||||
- linux-gcc5-debug-coverage
|
||||
- linux-doxygen
|
||||
- ios-debug
|
||||
- ios-debug-xcode10
|
||||
- ios-release-template:
|
||||
@@ -179,108 +40,7 @@ workflows:
|
||||
- ios-static-analyzer-nightly
|
||||
- ios-static-analyzer-nightly-xcode10
|
||||
|
||||
executors:
|
||||
ubuntu-disco:
|
||||
docker:
|
||||
# FIXME: Move the image to mbgl/
|
||||
- image: tmpsantos/mbgl_ci:1.5
|
||||
resource_class: xlarge
|
||||
working_directory: /src
|
||||
environment:
|
||||
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
|
||||
MSAN_OPTIONS: poison_in_dtor=1
|
||||
ASAN_OPTIONS: strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1
|
||||
QT_INSTALL_DOCS: /usr/share/qt5/doc
|
||||
QT_VERSION: 5
|
||||
macos-11_0_0:
|
||||
macos:
|
||||
xcode: '11.1.0'
|
||||
environment:
|
||||
HOMEBREW_NO_AUTO_UPDATE: 1
|
||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||
|
||||
commands:
|
||||
next-prepare:
|
||||
steps:
|
||||
- restore_cache:
|
||||
keys:
|
||||
- 'ccache-v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ .Revision }}'
|
||||
- 'ccache-v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-'
|
||||
- 'ccache-v1-{{ .Environment.CIRCLE_JOB }}-master'
|
||||
- 'ccache-v1-{{ .Environment.CIRCLE_JOB }}-'
|
||||
- run:
|
||||
name: Prepare
|
||||
command: |
|
||||
git submodule sync
|
||||
git submodule update --init --recursive
|
||||
npm install --ignore-scripts
|
||||
ulimit -c unlimited
|
||||
next-prepare-macos:
|
||||
steps:
|
||||
- run:
|
||||
name: Prepare macOS
|
||||
command: |
|
||||
brew install cmake ccache glfw ninja pkgconfig qt
|
||||
- run:
|
||||
name: Code Generators macOS
|
||||
command: |
|
||||
platform/darwin/scripts/generate-style-code.js
|
||||
platform/darwin/scripts/update-examples.js
|
||||
git add -A && git diff --staged --exit-code
|
||||
next-config:
|
||||
parameters:
|
||||
config_params:
|
||||
type: string
|
||||
steps:
|
||||
- run:
|
||||
name: Configure
|
||||
command: |
|
||||
cmake next -B build << parameters.config_params >>
|
||||
next-build:
|
||||
parameters:
|
||||
build_params:
|
||||
type: string
|
||||
steps:
|
||||
- run:
|
||||
name: Build
|
||||
command: |
|
||||
ccache --zero-stats --max-size=2G
|
||||
cmake --build build -j 8 << parameters.build_params >>
|
||||
ccache --show-stats
|
||||
git gc
|
||||
next-save:
|
||||
steps:
|
||||
- save_cache:
|
||||
key: 'ccache-v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ .Revision }}'
|
||||
paths:
|
||||
- .git/modules
|
||||
- /Users/distiller/Library/Caches/Homebrew
|
||||
- node_modules
|
||||
- ~/.ccache
|
||||
- ~/.gradle
|
||||
- run:
|
||||
name: Collecting artifacts
|
||||
when: on_fail
|
||||
command: |
|
||||
mkdir -p /tmp/tests/render
|
||||
if [ -f mapbox-gl-js/test/integration/index.html ]; then cp mapbox-gl-js/test/integration/index.html /tmp/tests/render; fi
|
||||
mkdir -p /tmp/tests/coredumps
|
||||
if ls core* 1> /dev/null 2>&1; then cp core* /tmp/tests/coredumps; fi
|
||||
- store_artifacts:
|
||||
path: /tmp/tests
|
||||
destination: tests
|
||||
next-test:
|
||||
parameters:
|
||||
test_wrapper:
|
||||
type: string
|
||||
test_params:
|
||||
type: string
|
||||
steps:
|
||||
- run:
|
||||
name: Test
|
||||
command: |
|
||||
cd build
|
||||
<< parameters.test_wrapper >> ctest --output-on-failure << parameters.test_params >>
|
||||
npm-install:
|
||||
steps:
|
||||
- run:
|
||||
@@ -336,19 +96,6 @@ commands:
|
||||
keys:
|
||||
- 'node_modules/v1/{{ arch }}/{{ checksum "package.json" }}'
|
||||
- 'node_modules/v1/{{ arch }}'
|
||||
save-mason_packages-cache:
|
||||
steps:
|
||||
- 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:
|
||||
steps:
|
||||
- restore_cache:
|
||||
name: Restore mason_packages cache
|
||||
keys:
|
||||
- 'mason_packages/v3/{{ arch }}/{{ checksum "cmake/mason-dependencies.cmake" }}'
|
||||
- 'mason_packages/v3/{{ arch }}'
|
||||
save-ccache:
|
||||
steps:
|
||||
- save_cache:
|
||||
@@ -365,19 +112,6 @@ commands:
|
||||
- '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:
|
||||
steps:
|
||||
- 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:
|
||||
steps:
|
||||
- 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'
|
||||
|
||||
|
||||
install-dependencies:
|
||||
@@ -388,12 +122,6 @@ commands:
|
||||
ccache:
|
||||
type: boolean
|
||||
default: true
|
||||
mason:
|
||||
type: boolean
|
||||
default: true
|
||||
gradle:
|
||||
type: boolean
|
||||
default: false
|
||||
steps:
|
||||
- checkout
|
||||
- when:
|
||||
@@ -403,12 +131,6 @@ commands:
|
||||
- when:
|
||||
condition: << parameters.ccache >>
|
||||
steps: [ prepare-ccache, restore-ccache, reset-ccache-stats ]
|
||||
- when:
|
||||
condition: << parameters.mason >>
|
||||
steps: [ restore-mason_packages-cache ]
|
||||
- when:
|
||||
condition: << parameters.gradle >>
|
||||
steps: [ restore-gradle-cache ]
|
||||
save-dependencies:
|
||||
parameters:
|
||||
node_modules:
|
||||
@@ -417,12 +139,6 @@ commands:
|
||||
ccache:
|
||||
type: boolean
|
||||
default: true
|
||||
mason:
|
||||
type: boolean
|
||||
default: true
|
||||
gradle:
|
||||
type: boolean
|
||||
default: false
|
||||
steps:
|
||||
- when:
|
||||
condition: << parameters.node_modules >>
|
||||
@@ -430,24 +146,6 @@ commands:
|
||||
- when:
|
||||
condition: << parameters.ccache >>
|
||||
steps: [ save-ccache, show-ccache-stats ]
|
||||
- when:
|
||||
condition: << parameters.mason >>
|
||||
steps: [ save-mason_packages-cache ]
|
||||
- when:
|
||||
condition: << parameters.gradle >>
|
||||
steps: [ save-gradle-cache ]
|
||||
|
||||
|
||||
setup-llvm-symbolizer:
|
||||
steps:
|
||||
- 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
|
||||
|
||||
|
||||
configure-cmake:
|
||||
@@ -459,26 +157,6 @@ commands:
|
||||
cd build
|
||||
cmake -DWITH_COVERAGE=${WITH_COVERAGE:0} -DWITH_OSMESA=${WITH_OSMESA:0} -DWITH_EGL=${WITH_EGL:0} ..
|
||||
cd ..
|
||||
build-node:
|
||||
steps:
|
||||
- run:
|
||||
name: Build node
|
||||
command: make node-all
|
||||
build-linux:
|
||||
steps:
|
||||
- run:
|
||||
name: Build linux
|
||||
command: make linux
|
||||
build-benchmark:
|
||||
steps:
|
||||
- run:
|
||||
name: Build benchmark
|
||||
command: make benchmark
|
||||
build-test:
|
||||
steps:
|
||||
- run:
|
||||
name: Build test
|
||||
command: make test
|
||||
build-ios-test:
|
||||
steps:
|
||||
- run:
|
||||
@@ -505,28 +183,6 @@ commands:
|
||||
command: make darwin-check-public-symbols
|
||||
|
||||
|
||||
conditionally-skip-firebase:
|
||||
steps:
|
||||
- run:
|
||||
name: Check if Firebase should be skipped
|
||||
command: |
|
||||
SKIPPABLE_TAG=$( git log -1 | grep -ioE -e "\[(skip.firebase|firebase.skip)\]" -e "\[((i|mac)os)+(, (i|mac)os)?\]" -e "\[darwin\]" || true )
|
||||
if [ -n "${SKIPPABLE_TAG}" ]; then
|
||||
echo "Skipping Firebase tests because commit message contained: '${SKIPPABLE_TAG}'"
|
||||
echo 'export SKIP_FIREBASE=1' >> $BASH_ENV
|
||||
fi
|
||||
login-google-cloud-platform:
|
||||
steps:
|
||||
- run:
|
||||
name: Log in to Google Cloud Platform
|
||||
command: |
|
||||
if [[ -n "${GCLOUD_SERVICE_ACCOUNT_JSON}" && -z "${SKIP_FIREBASE:-}" ]]; 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
|
||||
|
||||
|
||||
install-ios-packaging-dependencies:
|
||||
steps:
|
||||
- run:
|
||||
@@ -542,45 +198,6 @@ commands:
|
||||
name: Install macOS dependencies
|
||||
command: brew install cmake ccache
|
||||
|
||||
install-node-macos-dependencies:
|
||||
steps:
|
||||
- run:
|
||||
name: Install Node macOS dependencies
|
||||
command: |
|
||||
brew install node@8
|
||||
brew link node@8 --force --overwrite
|
||||
|
||||
run-node-macos-tests:
|
||||
steps:
|
||||
- run:
|
||||
name: Run node tests
|
||||
command: make test-node
|
||||
|
||||
run-unit-tests:
|
||||
steps:
|
||||
- run:
|
||||
name: Run tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
make run-test
|
||||
|
||||
run-unit-tests-sanitized:
|
||||
steps:
|
||||
- run:
|
||||
name: Run tests
|
||||
command: |
|
||||
# Source.RenderTileSetSourceUpdate and Source.InvisibleSourcesTileNecessity are filtered out due to #15294
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" make run-test--Source.RenderTileSetSourceUpdate:Source.InvisibleSourcesTileNecessity 2> >(tee sanitizer 1>&2)
|
||||
# Unfortunately, Google Test eats the status code, so we'll have to check the output.
|
||||
[ -z "$(sed -n '/^SUMMARY: .*Sanitizer:/p' sanitizer)" ]
|
||||
|
||||
publish-node-package:
|
||||
steps:
|
||||
- run:
|
||||
name: Publish node package
|
||||
when: on_success
|
||||
command: platform/node/scripts/publish.sh
|
||||
|
||||
collect-xcode-build-logs:
|
||||
steps:
|
||||
- run:
|
||||
@@ -631,430 +248,6 @@ commands:
|
||||
fi
|
||||
|
||||
jobs:
|
||||
next-sanity-checks:
|
||||
executor: ubuntu-disco
|
||||
steps:
|
||||
- checkout
|
||||
- next-prepare
|
||||
- next-config:
|
||||
config_params: '-G Ninja -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8'
|
||||
- run:
|
||||
name: Code Generators
|
||||
command: |
|
||||
platform/android/scripts/generate-style-code.js
|
||||
platform/default/include/mbgl/storage/offline_schema.js
|
||||
scripts/generate-file-lists.js
|
||||
scripts/generate-shaders.js
|
||||
scripts/generate-style-code.js
|
||||
git add -A && git diff --staged --exit-code
|
||||
- run:
|
||||
name: CMake Format
|
||||
command: |
|
||||
cmake-format -i $(find next -type f -name CMakeLists.txt -o -name '*.cmake')
|
||||
git diff --exit-code
|
||||
- run:
|
||||
name: Clang Format
|
||||
command: |
|
||||
git diff -U0 --ignore-submodules=all --no-color origin/master... *.cpp *.hpp | clang-format-diff-8 -p1 -i
|
||||
git diff --exit-code
|
||||
- run:
|
||||
name: Clang Tidy
|
||||
command: |
|
||||
run-clang-tidy-8 -quiet -j24 -p build $PWD/src/.*cpp $PWD/platform/.*cpp |tee clang-tidy.log
|
||||
grep -o \\[[a-z].*-.*[a-z]\] clang-tidy.log |sort |uniq -c |sort -n
|
||||
mkdir -p /tmp/tests/clang-tidy
|
||||
if [ -f clang-tidy.log ]; then cp clang-tidy.log /tmp/tests/clang-tidy; fi
|
||||
- next-save
|
||||
next-build-template:
|
||||
parameters:
|
||||
config_params:
|
||||
type: string
|
||||
default: ''
|
||||
build_params:
|
||||
type: string
|
||||
default: ''
|
||||
test_params:
|
||||
type: string
|
||||
default: ''
|
||||
executor_name:
|
||||
type: string
|
||||
target_is_android:
|
||||
type: boolean
|
||||
default: false
|
||||
target_is_linux:
|
||||
type: boolean
|
||||
default: false
|
||||
target_is_macos:
|
||||
type: boolean
|
||||
default: false
|
||||
executor: << parameters.executor_name >>
|
||||
steps:
|
||||
- checkout
|
||||
- next-prepare
|
||||
- when:
|
||||
condition: << parameters.target_is_android >>
|
||||
steps:
|
||||
- next-config:
|
||||
config_params: << parameters.config_params >>
|
||||
- next-build:
|
||||
build_params: << parameters.build_params >>
|
||||
- when:
|
||||
condition: << parameters.target_is_linux >>
|
||||
steps:
|
||||
- next-config:
|
||||
config_params: << parameters.config_params >>
|
||||
- next-build:
|
||||
build_params: << parameters.build_params >>
|
||||
- next-test:
|
||||
test_wrapper: 'xvfb-run -s -noreset'
|
||||
test_params: << parameters.test_params >>
|
||||
- when:
|
||||
condition: << parameters.target_is_macos >>
|
||||
steps:
|
||||
- next-prepare-macos
|
||||
- next-config:
|
||||
config_params: << parameters.config_params >>
|
||||
- next-build:
|
||||
build_params: << parameters.build_params >>
|
||||
- next-test:
|
||||
test_wrapper: ''
|
||||
test_params: << parameters.test_params >>
|
||||
- next-save
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
android-arm-template:
|
||||
parameters:
|
||||
stl:
|
||||
type: string
|
||||
default: "c++_static"
|
||||
image:
|
||||
type: string
|
||||
default: android-ndk-r20:7b7c4b42cf
|
||||
firebase_device_id:
|
||||
type: string
|
||||
default: sailfish
|
||||
firebase_device_os:
|
||||
type: string
|
||||
default: "26"
|
||||
abi:
|
||||
type: string
|
||||
default: "arm-v8"
|
||||
docker:
|
||||
- image: mbgl/<< parameters.image >>
|
||||
resource_class: xlarge
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 8
|
||||
JOBS: 8
|
||||
BUILDTYPE: Debug
|
||||
IS_LOCAL_DEVELOPMENT: false
|
||||
MBGL_ANDROID_STL: << parameters.stl >>
|
||||
steps:
|
||||
- install-dependencies: { gradle: true }
|
||||
- check-if-this-job-can-be-skipped
|
||||
- run:
|
||||
name: Initialize vendor submodules
|
||||
command: git submodule update --init platform/android/vendor
|
||||
- run:
|
||||
name: Check code style
|
||||
command: make android-check
|
||||
- run:
|
||||
name: Run Android unit tests
|
||||
command: make run-android-unit-test
|
||||
- run:
|
||||
name: Build libmapbox-gl.so for << parameters.abi >>
|
||||
command: make android-lib-<< parameters.abi >>
|
||||
- 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-<< parameters.abi >>
|
||||
fi
|
||||
- save-dependencies: { gradle: true }
|
||||
- conditionally-skip-firebase
|
||||
- login-google-cloud-platform
|
||||
- run:
|
||||
name: Run instrumentation tests on Firebase
|
||||
no_output_timeout: 20m
|
||||
command: |
|
||||
if [[ -n "${GCLOUD_SERVICE_ACCOUNT_JSON}" && -z "${SKIP_FIREBASE:-}" ]]; 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 << parameters.firebase_device_id >> --os-version-ids << parameters.firebase_device_os >> --locales en --orientations portrait --timeout 20m \
|
||||
--environment-variables coverage=true,coverageFile="/sdcard/coverage.ec" --directories-to-pull /sdcard --results-dir mapbox-android-sdk-${CIRCLE_BUILD_NUM}
|
||||
coverageFile=`gsutil ls gs://test-lab-186672a0qp5bq-ycr70axads3nc/mapbox-android-sdk-${CIRCLE_BUILD_NUM}/**/*.ec | tail -1`
|
||||
gsutil cp $coverageFile $PWD/platform/android/MapboxGLAndroidSDK/build/jacoco | true
|
||||
fi
|
||||
- run:
|
||||
name: Parse and send Jacoco reports
|
||||
command: |
|
||||
if [[ $CIRCLE_BRANCH == master ]]; then
|
||||
make android-create-jacoco-report && make android-parse-and-send-jacoco-report
|
||||
fi
|
||||
- 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
|
||||
- store_artifacts:
|
||||
path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/debug/obj
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
android-release:
|
||||
docker:
|
||||
- image: mbgl/android-ndk-r20:7b7c4b42cf
|
||||
resource_class: xlarge
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 8
|
||||
JOBS: 8
|
||||
BUILDTYPE: Release
|
||||
IS_LOCAL_DEVELOPMENT: false
|
||||
steps:
|
||||
- install-dependencies: { gradle: true }
|
||||
- check-if-this-job-can-be-skipped
|
||||
- run:
|
||||
name: Initialize vendor submodules
|
||||
command: git submodule update --init platform/android/vendor
|
||||
- run:
|
||||
name: Android nitpick
|
||||
command: make run-android-nitpick
|
||||
- run:
|
||||
name: Trigger core benchmark run
|
||||
command: |
|
||||
if [ -n "${MOBILE_METRICS_TOKEN}" ]; then
|
||||
if [[ $CIRCLE_BRANCH == master ]]; then
|
||||
curl -u ${MOBILE_METRICS_TOKEN}: -d build_parameters[CIRCLE_JOB]=android-core-benchmark https://circleci.com/api/v1.1/project/github/mapbox/mobile-metrics/tree/master
|
||||
fi
|
||||
fi
|
||||
- run:
|
||||
name: Trigger android benchmark run
|
||||
command: |
|
||||
if [ -n "${MOBILE_METRICS_TOKEN}" ]; then
|
||||
if [[ $CIRCLE_BRANCH == master ]]; then
|
||||
curl -u ${MOBILE_METRICS_TOKEN}: -d build_parameters[CIRCLE_JOB]=android-benchmark https://circleci.com/api/v1.1/project/github/mapbox/mobile-metrics/tree/master
|
||||
fi
|
||||
fi
|
||||
- run:
|
||||
name: Generate Maven credentials
|
||||
command: |
|
||||
if [ -n "${BINTRAY_USER}" ]; then
|
||||
echo "BINTRAY_USER=$BINTRAY_USER
|
||||
BINTRAY_API_KEY=$BINTRAY_API_KEY
|
||||
GPG_PASSPHRASE=$GPG_PASSPHRASE"
|
||||
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
|
||||
- run:
|
||||
name: Generate javadoc
|
||||
command: make android-javadoc
|
||||
- save-dependencies: { gradle: true }
|
||||
- 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: Trigger external deploy steps
|
||||
command: |
|
||||
export VERSION_TAG=${CIRCLE_TAG}
|
||||
export GITHUB_TOKEN=${DANGER_GITHUB_API_TOKEN}
|
||||
export DOCS_REPO="android-docs"
|
||||
scripts/trigger-maps-documentation-deploy-steps.sh
|
||||
background: true
|
||||
# - run:
|
||||
# name: Record size
|
||||
# command: platform/android/scripts/metrics.sh
|
||||
# ------------------------------------------------------------------------------
|
||||
android-debug-arm-v7-buck:
|
||||
docker:
|
||||
- image: mbgl/android-ndk-r17c-buck:07c5ef2e71
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 2
|
||||
JOBS: 2
|
||||
BUILDTYPE: Debug
|
||||
ANDROID_NDK: /android/sdk/ndk-bundle
|
||||
steps:
|
||||
- checkout
|
||||
- npm-install
|
||||
- prepare-environment
|
||||
- check-if-this-job-can-be-skipped
|
||||
- run:
|
||||
name: Checkout submodules
|
||||
command: |
|
||||
git submodule update --init
|
||||
git submodule foreach git submodule update --init
|
||||
- run:
|
||||
name: Build Android library
|
||||
command: |
|
||||
cd misc/buck
|
||||
buck build mapbox-gl-native:android-core
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
node-macos-release:
|
||||
macos:
|
||||
xcode: "11.1.0"
|
||||
environment:
|
||||
BUILDTYPE: RelWithDebInfo
|
||||
HOMEBREW_NO_AUTO_UPDATE: 1
|
||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||
steps:
|
||||
- install-macos-dependencies
|
||||
- install-node-macos-dependencies
|
||||
- install-dependencies
|
||||
- check-if-this-job-can-be-skipped
|
||||
- build-node
|
||||
- save-dependencies
|
||||
- run-node-macos-tests
|
||||
- publish-node-package
|
||||
- collect-xcode-build-logs
|
||||
- upload-xcode-build-logs
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-clang-7-sanitize-address-undefined:
|
||||
docker:
|
||||
- image: mbgl/linux-clang-7:a5a3c52107
|
||||
resource_class: large
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Sanitize
|
||||
WITH_EGL: 1
|
||||
GDB: '' # Do not run with GDB
|
||||
CXXFLAGS: -fsanitize=address -fsanitize=undefined
|
||||
LDFLAGS: -fsanitize=address -fsanitize=undefined
|
||||
ASAN_OPTIONS: detect_leaks=0:color=always:print_summary=1
|
||||
UBSAN_OPTIONS: print_stacktrace=1:color=always:print_summary=1
|
||||
steps:
|
||||
- install-dependencies
|
||||
- check-if-this-job-can-be-skipped
|
||||
- setup-llvm-symbolizer
|
||||
- build-test
|
||||
- save-dependencies
|
||||
- run-unit-tests-sanitized
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-clang-7-sanitize-thread:
|
||||
docker:
|
||||
- image: mbgl/linux-clang-7:a5a3c52107
|
||||
resource_class: large
|
||||
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:
|
||||
- install-dependencies
|
||||
- check-if-this-job-can-be-skipped
|
||||
- setup-llvm-symbolizer
|
||||
- build-test
|
||||
- save-dependencies
|
||||
- run-unit-tests-sanitized
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-gcc5-debug-coverage:
|
||||
docker:
|
||||
- image: mbgl/linux-gcc-5:54f59e3ac5
|
||||
resource_class: large
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Debug
|
||||
WITH_EGL: 1
|
||||
WITH_COVERAGE: 1
|
||||
steps:
|
||||
- install-dependencies
|
||||
- check-if-this-job-can-be-skipped
|
||||
- build-linux
|
||||
- build-benchmark
|
||||
- build-test
|
||||
- save-dependencies
|
||||
- run-unit-tests
|
||||
- run:
|
||||
name: Upload coverage results to codecov.io
|
||||
command: |
|
||||
bash <(curl -sSfL https://codecov.io/bash) || echo 'Codecov failed to upload'
|
||||
- run:
|
||||
name: Upload coverage metrics to s3
|
||||
command: |
|
||||
if [[ $CIRCLE_BRANCH == master ]]; then
|
||||
scripts/publish_core_codecoverage.js -p Linux -s Core
|
||||
fi
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-doxygen:
|
||||
docker:
|
||||
- image: mbgl/linux-gcc-5:54f59e3ac5
|
||||
resource_class: large
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 2
|
||||
JOBS: 2
|
||||
BUILDTYPE: Debug
|
||||
WITH_EGL: 1
|
||||
WITH_COVERAGE: 1
|
||||
steps:
|
||||
- install-dependencies
|
||||
- check-if-this-job-can-be-skipped
|
||||
- run:
|
||||
name: Install doxygen
|
||||
command: apt update && apt install -y doxygen
|
||||
- build-linux
|
||||
- save-dependencies
|
||||
- run:
|
||||
name: Check documentation coverage
|
||||
command: |
|
||||
platform/linux/ninja -C "build/linux-$(uname -m)/Debug" doxygen_coverage
|
||||
scripts/publish_doxygen_coverage.js "build/linux-$(uname -m)/Debug/doxygen-coverage.json"
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
ios-debug:
|
||||
macos:
|
||||
xcode: "11.1.0"
|
||||
@@ -1265,14 +458,12 @@ jobs:
|
||||
name: Trigger external deploy steps
|
||||
command: |
|
||||
export VERSION_TAG=${CIRCLE_TAG}
|
||||
export GITHUB_TOKEN=${DANGER_GITHUB_API_TOKEN}
|
||||
export DOCS_REPO="ios-sdk"
|
||||
scripts/trigger-maps-documentation-deploy-steps.sh
|
||||
- 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
|
||||
- deploy:
|
||||
name: Deploy to CocoaPods
|
||||
|
||||
Reference in New Issue
Block a user