[qt] Initial CI pipeline (#221)

This commit is contained in:
Tadej Novak
2022-01-28 20:43:46 +01:00
committed by GitHub
parent 334a2401ae
commit 05836553f1
7 changed files with 339 additions and 59 deletions

View File

@@ -1,16 +1,17 @@
name: android-ci-pull
on:
on:
workflow_dispatch:
pull_request:
branches:
- master
- master
paths-ignore:
- "platform/ios/**"
- ".github/**"
- "README.md"
- ".gitignore"
- "platform/qt/**"
- ".github/**"
- "README.md"
- ".gitignore"
jobs:
build:
runs-on: ubuntu-20.04
@@ -45,45 +46,45 @@ jobs:
${{ runner.os }}-
- name: npm install
run: npm install --ignore-scripts
run: npm install --ignore-scripts
working-directory: platform/android
- name: Prepare ccache
run: ccache --clear
run: ccache --clear
- name: Cache ccache
uses: actions/cache@v2
env:
cache-name: ccache-v1
cache-name: ccache-v1
with:
path: ~/.ccache'
key: ${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}-${{ github.head_ref }}
restore-keys: |
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}
- name: Clear ccache statistics
run: |
ccache --zero-stats
ccache --max-size=2G
ccache --show-stats
ccache --show-stats
- name: restore-gradle-cache
uses: actions/cache@v2
env:
cache-name: gradle-v1
with:
path: ~/.gradle'
path: ~/.gradle'
key: ${{ env.cache-name }}-{{ hashFiles 'gradle/dependencies.gradle' }}-{{ hashFiles 'build.gradle' }}-{{ hashFiles 'gradle/wrapper/gradle-wrapper.properties' }}'
restore-keys: |
- ${{ env.cache-name }}
- ${{ env.cache-name }}
- name: Check code style
run: make android-check
- name: Run Android unit tests
run: make run-android-unit-test
run: make run-android-unit-test
- name: Build libmapbox-gl.so for arm-v8
run: make android-lib-arm-v8
@@ -102,4 +103,4 @@ jobs:
MapboxGLAndroidSDKTestApp/build/reports/lint-results.html
MapboxGLAndroidSDKTestApp/build/reports/lint-results.xml
MapboxGLAndroidSDKTestApp/lint-baseline.xml
MapboxGLAndroidSDK/build/intermediates/cmake/debug/obj
MapboxGLAndroidSDK/build/intermediates/cmake/debug/obj

View File

@@ -1,16 +1,17 @@
name: android-ci
on:
on:
workflow_dispatch:
push:
tags-ignore:
- '**'
paths-ignore:
- "platform/ios/**"
- ".github/**"
- "platform/qt/**"
- ".github/**"
- "README.md"
- ".gitignore"
jobs:
build:
runs-on: ubuntu-20.04
@@ -48,45 +49,45 @@ jobs:
${{ runner.os }}-
- name: npm install
run: npm install --ignore-scripts
run: npm install --ignore-scripts
working-directory: platform/android
- name: Prepare ccache
run: ccache --clear
run: ccache --clear
- name: Cache ccache
uses: actions/cache@v2
env:
cache-name: ccache-v1
cache-name: ccache-v1
with:
path: ~/.ccache'
key: ${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}-${{ github.head_ref }}
restore-keys: |
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}
- name: Clear ccache statistics
run: |
ccache --zero-stats
ccache --max-size=2G
ccache --show-stats
ccache --show-stats
- name: restore-gradle-cache
uses: actions/cache@v2
env:
cache-name: gradle-v1
with:
path: ~/.gradle'
path: ~/.gradle'
key: ${{ env.cache-name }}-{{ hashFiles 'gradle/dependencies.gradle' }}-{{ hashFiles 'build.gradle' }}-{{ hashFiles 'gradle/wrapper/gradle-wrapper.properties' }}'
restore-keys: |
- ${{ env.cache-name }}
- ${{ env.cache-name }}
- name: Check code style
run: make android-check
- name: Run Android unit tests
run: make run-android-unit-test
run: make run-android-unit-test
- name: Build libmapbox-gl.so for arm-v8
run: make android-lib-arm-v8
@@ -103,7 +104,7 @@ jobs:
else
echo "No secrets.MAPLIBRE_DEVELOPER_CONFIG_XML variable set, skipping apk build..."
fi
shell: bash
shell: bash
- name: Log in to Google Cloud Platform
run: |
@@ -116,7 +117,7 @@ jobs:
else
echo "No secrets.GLCLOUD_SERVICE_JSON variable set, skipping google cloud login..."
fi
shell: bash
shell: bash
- name: Run instrumentation tests on Firebase
run: |
@@ -131,7 +132,7 @@ jobs:
else
echo "No secrets.GLCLOUD_SERVICE_JSON variable set, skipping instrumentation tests..."
fi
shell: bash
shell: bash
- name: Store debug artifacts
uses: actions/upload-artifact@v2

View File

@@ -6,18 +6,20 @@ on:
tags-ignore:
- '**'
paths-ignore:
- "platform/android/**"
- ".github/**"
- "platform/android/**"
- "platform/qt/**"
- ".github/**"
- "README.md"
- ".gitignore"
- ".gitignore"
pull_request:
branches:
- master
- master
paths-ignore:
- "platform/android/**"
- ".github/**"
- "platform/android/**"
- "platform/qt/**"
- ".github/**"
- "README.md"
- ".gitignore"
- ".gitignore"
jobs:
build:
@@ -29,14 +31,14 @@ jobs:
defaults:
run:
working-directory: platform/ios
shell: bash
shell: bash
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
- name: Install macos dependencies
run: |
brew list cmake || brew install cmake
@@ -57,35 +59,35 @@ jobs:
${{ runner.os }}-
- name: npm install
run: npm install --ignore-scripts
run: npm install --ignore-scripts
- name: Prepare ccache
run: ccache --clear
run: ccache --clear
- name: Cache ccache
uses: actions/cache@v2
env:
cache-name: ccache-v1
cache-name: ccache-v1
with:
path: ~/.ccache'
key: ${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}-${{ github.head_ref }}
restore-keys: |
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}
${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}
- name: Clear ccache statistics
run: |
ccache --zero-stats
ccache --max-size=2G
ccache --show-stats
ccache --show-stats
- name: Install iOS packaging dependencies
run: |
./platform/ios/scripts/install-packaging-dependencies.sh
env:
CILAUNCH: true
- name: Check debug symbols
run: make darwin-check-public-symbols
@@ -99,7 +101,7 @@ jobs:
run: make ios-uitest
- name: Build and run SDK unit tests with thread and undefined behavior sanitizers
run: make ios-sanitize
run: make ios-sanitize
- name: Build and run SDK unit tests with address sanitizer
run: make ios-sanitize-address

View File

@@ -6,20 +6,22 @@ on:
tags-ignore:
- '**'
paths-ignore:
- "platform/android/**"
- ".github/**"
- "platform/android/**"
- "platform/qt/**"
- ".github/**"
- "README.md"
- ".gitignore"
- ".gitignore"
branches:
- master
pull_request:
branches:
- master
- master
paths-ignore:
- "platform/android/**"
- ".github/**"
- "platform/android/**"
- "platform/qt/**"
- ".github/**"
- "README.md"
- ".gitignore"
- ".gitignore"
jobs:
build:
@@ -32,14 +34,14 @@ jobs:
defaults:
run:
working-directory: platform/ios
shell: bash
shell: bash
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
- name: Install macos dependencies
run: |
brew list cmake || brew install cmake
@@ -60,28 +62,28 @@ jobs:
${{ runner.macos }}-
- name: npm install
run: npm install --ignore-scripts
run: npm install --ignore-scripts
- name: Prepare ccache
run: ccache --clear
run: ccache --clear
- name: Cache ccache
uses: actions/cache@v2
env:
cache-name: ccache-v1
cache-name: ccache-v1
with:
path: ~/.ccache'
key: ${{ env.cache-name }}-${{ runner.macos }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}-${{ github.head_ref }}
restore-keys: |
${{ env.cache-name }}-${{ runner.macos }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}
${{ env.cache-name }}-${{ runner.macos }}-${{ github.job }}-${{ github.ref }}
${{ env.cache-name }}-${{ runner.macos }}-${{ github.job }}
${{ env.cache-name }}-${{ runner.macos }}-${{ github.job }}
- name: Clear ccache statistics
run: |
ccache --zero-stats
ccache --max-size=2G
ccache --show-stats
ccache --show-stats
- name: Build macos test
run: |

108
.github/workflows/qt-ci-windows.yml vendored Normal file
View File

@@ -0,0 +1,108 @@
name: qt-ci-windows
on:
workflow_dispatch:
push:
tags-ignore:
- '**'
paths-ignore:
- "platform/android/**"
- "platform/darwin/**"
- "platform/ios/**"
- "platform/macos/**"
- ".github/**"
- "README.md"
- ".gitignore"
pull_request:
branches:
- master
paths-ignore:
- "platform/android/**"
- "platform/darwin/**"
- "platform/ios/**"
- "platform/macos/**"
- ".github/**"
- "README.md"
- ".gitignore"
jobs:
build-core:
runs-on: windows-latest
strategy:
matrix:
include:
- name: Windows
static: OFF
qt: 5.15.2
qtarch: win64_msvc2019_64
compiler: x64
- name: Windows_static
static: ON
qt: 5.15.2
qtarch: win64_msvc2019_64
compiler: x64
# - name: Windows
# static: ON
# qt: 6.2.2
# qtarch: win64_msvc2019_64
# compiler: x64
env:
BUILD_TYPE: Debug
BUILD_MODE: ${{ matrix.static }}
COMPILER_TYPE: ${{ matrix.compiler }}
QT_VERSION: ${{ matrix.qt }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
path: source
fetch-depth: 0
- name: Setup submodules
shell: bash
run: |
cd source
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1 || true
- name: Download Qt
uses: jurplel/install-qt-action@v2
with:
version: ${{ env.QT_VERSION }}
arch: ${{ matrix.qtarch }}
- name: Setup ninja
uses: seanmiddleditch/gha-setup-ninja@v3
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.compiler }}
- name: Build maplibre-gl-native (MSVC)
run: |
$env:Path = $env:Path -replace "C:\\ProgramData\\Chocolatey\\bin;",""
$env:Path = "$env:IQTA_TOOLS\$env:COMPILER_TYPE\bin;$env:Path"
echo "$env:Path"
mkdir build
cd build
$BuildType = "$env:BUILD_TYPE"
$BuildMode = "$env:BUILD_MODE"
cmake -S ../source/ `
-G Ninja `
-DCMAKE_BUILD_TYPE="$BuildType" `
-DCMAKE_INSTALL_PREFIX="../install" `
-DMBGL_WITH_QT=ON `
-DMBGL_QT_LIBRARY_ONLY=ON `
-DMBGL_QT_STATIC="$BuildMode" `
-DMBGL_QT_WITH_INTERNAL_SQLITE=OFF
ninja
ninja install
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: maplibre-gl-native_${{ matrix.name }}_Qt${{ matrix.qt }}
path: install

159
.github/workflows/qt-ci.yml vendored Normal file
View File

@@ -0,0 +1,159 @@
name: qt-ci
on:
workflow_dispatch:
push:
tags-ignore:
- '**'
paths-ignore:
- "platform/android/**"
- "platform/darwin/**"
- "platform/macos/**"
- ".github/**"
- "README.md"
- ".gitignore"
pull_request:
branches:
- master
paths-ignore:
- "platform/android/**"
- "platform/darwin/**"
- "platform/macos/**"
- ".github/**"
- "README.md"
- ".gitignore"
jobs:
build-core:
strategy:
matrix:
include:
- name: macOS
os: macos-latest
static: OFF
qt: 5.15.2
qt_target: desktop
- name: macOS_static
os: macos-latest
static: ON
qt: 5.15.2
qt_target: desktop
- name: iOS_static
os: macos-latest
static: ON
qt: 5.15.2
qt_target: ios
- name: macOS
os: macos-latest
static: ON
qt: 6.2.2
qt_target: desktop
- name: macOS_static
os: macos-latest
static: OFF
qt: 6.2.2
qt_target: desktop
runs-on: ${{ matrix.os }}
env:
BUILD_TYPE: Debug
BUILD_MODE: ${{ matrix.static }}
QT_VERSION: ${{ matrix.qt }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
path: source
submodules: recursive
fetch-depth: 0
- name: Install dependencies
if: runner.os == 'macOS'
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
run: |
brew list cmake || brew install cmake
brew list ccache || brew install ccache
brew list ninja || brew install ninja
- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Download Qt
uses: jurplel/install-qt-action@v2
with:
version: ${{ env.QT_VERSION }}
target: ${{ matrix.qt_target }}
- name: Prepare ccache
run: |
ccache --clear
ccache --set-config cache_dir=~/.ccache
- name: Cache ccache
uses: actions/cache@v2
env:
cache-name: ccache-v1
with:
path: ~/.ccache
key: ${{ env.cache-name }}-${{ runner.os }}-${{ matrix.name }}-${{ matrix.qt }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}-${{ github.head_ref }}
restore-keys: |
${{ env.cache-name }}-${{ runner.os }}-${{ matrix.name }}-${{ matrix.qt }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}
${{ env.cache-name }}-${{ runner.os }}-${{ matrix.name }}-${{ matrix.qt }}-${{ github.job }}-${{ github.ref }}
${{ env.cache-name }}-${{ runner.os }}-${{ matrix.name }}-${{ matrix.qt }}-${{ github.job }}
- name: Clear ccache statistics
run: |
ccache --zero-stats
ccache --max-size=2G
ccache --show-stats -v
- name: Build maplibre-gl-native (macOS)
if: runner.os == 'macOS' && matrix.qt_target == 'desktop'
run: |
mkdir build && cd build
cmake ../source/ \
-G Ninja \
-DMBGL_WITH_QT=ON \
-DMBGL_QT_STATIC=${BUILD_MODE} \
-DMBGL_QT_WITH_INTERNAL_SQLITE=OFF \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DCMAKE_INSTALL_PREFIX=../install \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
ninja
ninja install
- name: Build maplibre-gl-native (iOS)
if: runner.os == 'macOS' && matrix.qt_target == 'ios'
run: |
mkdir build && cd build
cmake ../source/ \
-DCMAKE_TOOLCHAIN_FILE=../source/platform/ios/platform/ios/toolchain.cmake \
-G Xcode \
-DPLATFORM=OS64COMBINED \
-DDEPLOYMENT_TARGET=12.0 \
-DENABLE_BITCODE=ON \
-DMBGL_WITH_QT=ON \
-DMBGL_WITH_WERROR=OFF \
-DMBGL_QT_LIBRARY_ONLY=ON \
-DMBGL_QT_STATIC=${BUILD_MODE} \
-DMBGL_QT_WITH_INTERNAL_SQLITE=OFF \
-DMBGL_QT_WITH_IOS_CCACHE=ON \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DCMAKE_INSTALL_PREFIX=../install
cmake --build . --config Release
cmake --install . --config Release
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: maplibre-gl-native_${{ matrix.name }}_Qt${{ matrix.qt }}
path: install
- name: Show ccache statistics
run: |
ccache --show-stats -v

View File

@@ -47,6 +47,13 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
add_definitions("-D_USE_MATH_DEFINES")
endif()
if(CMAKE_SYSTEM_NAME STREQUAL iOS)
option(MBGL_QT_WITH_IOS_CCACHE "Enable ccache for iOS" OFF)
if(MBGL_QT_WITH_IOS_CCACHE)
include(${PROJECT_SOURCE_DIR}/platform/ios/ccache.cmake)
endif()
endif()
if(ANDROID)
message(STATUS "Building for ABI: ${ANDROID_ABI}")
set(CMAKE_STATIC_LIBRARY_SUFFIX "_${ANDROID_ABI}.a")