summaryrefslogtreecommitdiff
path: root/circle.yml
diff options
context:
space:
mode:
Diffstat (limited to 'circle.yml')
-rw-r--r--circle.yml491
1 files changed, 203 insertions, 288 deletions
diff --git a/circle.yml b/circle.yml
index 6a6404aab2..f19507663d 100644
--- a/circle.yml
+++ b/circle.yml
@@ -11,16 +11,109 @@ workflows:
- node6-clang39-release
- node6-clang39-debug
- linux-clang39-debug
- - linux-gcc4.9-debug
- linux-clang4-sanitize-address
- linux-clang4-sanitize-undefined
- linux-clang4-sanitize-thread
+ - linux-gcc4.9-debug
- linux-gcc5-debug-coverage
- linux-gcc5-release-qt4
- linux-gcc5-release-qt5
-jobs:
+step-library:
+ - &generate-cache-key
+ run:
+ name: Generate cache key
+ command: |
+ echo "$(date +"%Y-%V")" > .circle-week
+ ccache --clear
+ ccache --max-size=5G
+ - &restore-cache
+ restore_cache:
+ keys:
+ - 'v3/{{ .Environment.CIRCLE_JOB }}/{{ .Branch }}/{{ checksum ".circle-week" }}'
+ - 'v3/{{ .Environment.CIRCLE_JOB }}/master/{{ checksum ".circle-week" }}'
+ - &save-cache
+ save_cache:
+ key: 'v3/{{ .Environment.CIRCLE_JOB }}/{{ .Branch }}/{{ checksum ".circle-week" }}'
+ paths: [ "node_modules", "/root/.ccache" ]
+
+
+ - &reset-ccache-stats
+ run:
+ name: Clear ccache statistics
+ command: |
+ ccache --zero-stats
+ ccache --show-stats
+ - &show-ccache-stats
+ run:
+ name: Show ccache statistics
+ command: ccache --show-stats
+
+
+ - &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
+ - &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
+
+ - &run-node-tests
+ run:
+ name: Run node tests
+ command: |
+ xvfb-run --server-args="-screen 0 1024x768x24" \
+ logbt -- apitrace trace --api=egl -v make test-node
+ - &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/after_success.sh
+
+
+ - &upload-render-tests
+ store_artifacts:
+ path: mapbox-gl-js/test/integration/render-tests/index.html
+ destination: render-tests
+
+jobs:
# ------------------------------------------------------------------------------
clang-tidy:
docker:
@@ -35,11 +128,9 @@ jobs:
- master
steps:
- checkout
- - restore_cache:
- key: v1-clang-tidy
- paths:
- - node_modules
- - /root/.ccache
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
- run:
name: Fetch 'origin/master' branch
command: git fetch origin master:refs/remotes/origin/master
@@ -49,16 +140,13 @@ jobs:
- run:
name: Run Clang checks
command: make check
- - save_cache:
- key: v1-clang-tidy
- paths:
- - node_modules
- - /root/.ccache
+ - *show-ccache-stats
+ - *save-cache
# ------------------------------------------------------------------------------
android-debug-arm-v7:
docker:
- - image: mbgl/ci:r4-android-ndk-r15-gradle
+ - image: mbgl/ci@sha256:c34e221294d81da80918d3e9a9df5de795b067e88f86d7c9a5e262763332536e
working_directory: /src
environment:
LIBSYSCONFCPUS: 6
@@ -66,11 +154,9 @@ jobs:
BUILDTYPE: Debug
steps:
- checkout
- - restore_cache:
- key: v1-android-debug-arm-v7
- paths:
- - node_modules
- - /root/.ccache
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
- run:
name: Build libmapbox-gl.so for arm-v7
command: make android-lib-arm-v7
@@ -94,6 +180,8 @@ jobs:
command: |
echo "${MAPBOX_DEVELOPER_CONFIG_XML}" > platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml
make android-ui-test-arm-v7
+ - *show-ccache-stats
+ - *save-cache
- run:
name: Log in to Google Cloud Platform
shell: /bin/bash -euo pipefail
@@ -122,11 +210,6 @@ jobs:
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: .
@@ -134,7 +217,7 @@ jobs:
# ------------------------------------------------------------------------------
android-release-all:
docker:
- - image: mbgl/ci:r4-android-ndk-r15-gradle
+ - image: mbgl/ci@sha256:c34e221294d81da80918d3e9a9df5de795b067e88f86d7c9a5e262763332536e
working_directory: /src
environment:
LIBSYSCONFCPUS: 6
@@ -142,11 +225,9 @@ jobs:
BUILDTYPE: Release
steps:
- checkout
- - restore_cache:
- key: v1-android-release-all
- paths:
- - node_modules
- - /root/.ccache
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
- run:
name: Generate Maven credentials
shell: /bin/bash -euo pipefail
@@ -160,6 +241,8 @@ jobs:
- run:
name: Build package
command: make apackage
+ - *show-ccache-stats
+ - *save-cache
- store_artifacts:
path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk
destination: .
@@ -172,11 +255,7 @@ jobs:
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:
@@ -192,31 +271,15 @@ jobs:
PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true)
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: |
- 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
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-node
+ - *show-ccache-stats
+ - *run-node-tests
+ - *publish-node-package
+ - *save-cache
+ - *upload-render-tests
# ------------------------------------------------------------------------------
node6-clang39-release:
@@ -232,31 +295,15 @@ jobs:
PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true)
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: |
- 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
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-node
+ - *show-ccache-stats
+ - *run-node-tests
+ - *publish-node-package
+ - *save-cache
+ - *upload-render-tests
# ------------------------------------------------------------------------------
node6-clang39-debug:
@@ -272,31 +319,15 @@ jobs:
PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true)
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: |
- 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
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-node
+ - *show-ccache-stats
+ - *run-node-tests
+ - *publish-node-package
+ - *save-cache
+ - *upload-render-tests
# ------------------------------------------------------------------------------
linux-clang39-debug:
@@ -310,31 +341,15 @@ jobs:
WITH_EGL: 1
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: |
- xvfb-run --server-args="-screen 0 1024x768x24" \
- make run-test
- - save_cache:
- key: v1-linux-clang39-debug
- paths:
- - node_modules
- - /root/.ccache
-
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-linux
+ - *build-benchmark
+ - *build-test
+ - *show-ccache-stats
+ - *run-unit-tests
+ - *save-cache
# ------------------------------------------------------------------------------
linux-clang4-sanitize-address:
@@ -352,34 +367,19 @@ jobs:
ASAN_OPTIONS: detect_leaks=0:color=always
steps:
- checkout
- - restore_cache:
- key: v1-linux-clang4-sanitize-address
- paths:
- - node_modules
- - /root/.ccache
- - 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
- - run:
- name: Build test
- command: make test
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *setup-llvm-symbolizer
+ - *build-test
+ - *show-ccache-stats
- 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)" ]
- - save_cache:
- key: v1-linux-clang4-sanitize-address
- paths:
- - node_modules
- - /root/.ccache
-
+ - *save-cache
# ------------------------------------------------------------------------------
linux-clang4-sanitize-undefined:
@@ -397,36 +397,19 @@ jobs:
UBSAN_OPTIONS: print_stacktrace=1:color=always
steps:
- checkout
- - restore_cache:
- key: v1-linux-clang4-sanitize-undefined
- paths:
- - node_modules
- - /root/.ccache
- - 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
- - run:
- name: Build test
- command: make test
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *setup-llvm-symbolizer
+ - *build-test
+ - *show-ccache-stats
- 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.
- # Uncomment this once we've fixed all thread behavior to make new thread behavior
- # fail on CircleCI.
- # [ -z "$(sed -n '/^SUMMARY: UndefinedBehaviorSanitizer:/p' sanitizer)" ]
- - save_cache:
- key: v1-linux-clang4-sanitize-address-undefined
- paths:
- - node_modules
- - /root/.ccache
-
+ [ -z "$(sed -n '/^SUMMARY: UndefinedBehaviorSanitizer:/p' sanitizer)" ]
+ - *save-cache
# ------------------------------------------------------------------------------
linux-clang4-sanitize-thread:
@@ -444,39 +427,24 @@ jobs:
TSAN_OPTIONS: color=always
steps:
- checkout
- - restore_cache:
- key: v1-linux-clang4-sanitize-thread
- paths:
- - node_modules
- - /root/.ccache
- - 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
- - run:
- name: Build test
- command: make test
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *setup-llvm-symbolizer
+ - *build-test
+ - *show-ccache-stats
+ - *save-cache
- 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)" ]
- - save_cache:
- key: v1-linux-clang4-sanitize-thread
- paths:
- - node_modules
- - /root/.ccache
-
# ------------------------------------------------------------------------------
linux-gcc4.9-debug:
docker:
- - image: mbgl/ci:r3-linux-gcc-4.9
+ - image: mbgl/ci:r4-linux-gcc-4.9
working_directory: /src
environment:
LIBSYSCONFCPUS: 6
@@ -487,32 +455,15 @@ jobs:
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
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-linux
+ - *build-benchmark
+ - *build-test
+ - *show-ccache-stats
+ - *save-cache
+ - *run-unit-tests
# ------------------------------------------------------------------------------
linux-gcc5-debug-coverage:
@@ -527,34 +478,18 @@ jobs:
WITH_COVERAGE: 1
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: |
- xvfb-run --server-args="-screen 0 1024x768x24" \
- make run-test
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-linux
+ - *build-benchmark
+ - *build-test
+ - *run-unit-tests
- run:
name: Upload coverage results to coveralls
command: |
platform/linux/scripts/coveralls.sh
- - save_cache:
- key: v1-linux-gcc5-debug-coverage
- paths:
- - node_modules
- - /root/.ccache
+ - *save-cache
# ------------------------------------------------------------------------------
linux-gcc5-release-qt4:
@@ -567,31 +502,21 @@ jobs:
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
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-qt-app
+ - *build-qt-test
+ - *show-ccache-stats
- 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)"
- - save_cache:
- key: v1-linux-gcc5-release-qt4
- paths:
- - node_modules
- - /root/.ccache
+ - *save-cache
# ------------------------------------------------------------------------------
linux-gcc5-release-qt5:
@@ -603,23 +528,17 @@ jobs:
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
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-qt-app
+ - *build-qt-test
- run:
name: Build qt-docs
command: make qt-docs
+ - *show-ccache-stats
- run:
name: Run valgrind-backed tests
environment:
@@ -627,8 +546,4 @@ jobs:
command: |
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
+ - *save-cache