Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci #10

Merged
merged 22 commits into from
Apr 29, 2024
Merged

ci #10

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
405 changes: 405 additions & 0 deletions .clang-tidy.in

Large diffs are not rendered by default.

318 changes: 318 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,318 @@
name: Linux+MacOS Build

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
release:
types:
- published

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
formatting:
runs-on: ubuntu-latest
container: ghcr.io/motis-project/docker-cpp-build
steps:
- uses: actions/checkout@v4

- name: Format files
run: |
find base libs modules test \
-type f -a \( -name "*.cc" -o -name "*.h" -o -name ".cuh" -o -name ".cu" \) \
-print0 | xargs -0 clang-format-16 -i

- name: Check for differences
run: |
git config --global --add safe.directory `pwd`
git status --porcelain
git status --porcelain | xargs -I {} -0 test -z \"{}\"

msvc:
runs-on: windows-latest

strategy:
fail-fast: false
matrix:
config:
- mode: Debug
- mode: Release

env:
CXX: cl.exe
CC: cl.exe
BUILDCACHE_COMPRESS: true
BUILDCACHE_DIRECT_MODE: true
BUILDCACHE_ACCURACY: SLOPPY # not suitable for coverage/debugging
BUILDCACHE_DIR: ${{ github.workspace }}/.buildcache
BUILDCACHE_LUA_PATH: ${{ github.workspace }}/tools
CLICOLOR_FORCE: 1

steps:
- uses: actions/checkout@v4

- name: Install ninja
run: choco install ninja

- name: Restore buildcache Cache
uses: actions/cache/restore@v4
id: restore-buildcache
with:
path: ${{ github.workspace }}/.buildcache
key: buildcache-wnds-${{ matrix.config.mode }}-${{ hashFiles('.pkg') }}-${{ hashFiles('**/*.h') }}-${{ hashFiles('**/*.cc') }}
restore-keys: |
buildcache-wnds-${{ matrix.config.mode }}-${{ hashFiles('.pkg') }}-${{ hashFiles('**/*.h') }}
buildcache-wnds-${{ matrix.config.mode }}-${{ hashFiles('.pkg') }}-
buildcache-wnds-${{ matrix.config.mode }}-

- name: Dependencies Cache
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/deps
key: deps-${{ hashFiles('.pkg') }}
restore-keys: deps-

- uses: ilammy/msvc-dev-cmd@v1

- name: Build
run: |
cmake `
-GNinja -S . -B build `
-DCMAKE_BUILD_TYPE=${{ matrix.config.mode }}
.\build\buildcache\bin\buildcache.exe -z
cmake --build build --target osr-extract osr-backend osr-benchmark osr-test
$CompilerExitCode = $LastExitCode
.\build\buildcache\bin\buildcache.exe -s
exit $CompilerExitCode

# ==== TESTS ====
- name: Run Tests
run: .\build\osr-test.exe

# ==== SAVE CACHE ====
- name: Save buildcache Cache
if: always()
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/.buildcache
key: ${{ steps.restore-buildcache.outputs.cache-primary-key }}

# ==== DISTRIBUTION ====
- name: Create Distribution
if: matrix.config.mode == 'Release'
run: |
mkdir dist
mv web dist
mv .\build\osr-extract.exe dist
mv .\build\osr-backend.exe dist
cd dist
7z a osr-windows.zip *
mv osr-windows.zip ..

- name: Upload Distribution
if: matrix.config.mode == 'Release'
uses: actions/upload-artifact@v4
with:
name: osr-windows
path: dist

# ==== RELEASE ====
- name: Upload Release
if: github.event.action == 'published' && matrix.config.mode == 'Release'
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./osr-windows.zip
asset_name: osr-windows.zip
asset_content_type: application/zip

macos:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- preset: macos-x86_64
os: macos-13
- preset: macos-arm64
os: macos-14
env:
BUILDCACHE_COMPRESS: true
BUILDCACHE_DIRECT_MODE: true
BUILDCACHE_ACCURACY: SLOPPY
BUILDCACHE_LUA_PATH: ${{ github.workspace }}/tools
BUILDCACHE_DIR: ${{ github.workspace }}/.buildcache
BUILDCACHE_MAX_CACHE_SIZE: 1073741824
BUILDCACHE_DEBUG: 0
UBSAN_OPTIONS: halt_on_error=1:abort_on_error=1
ASAN_OPTIONS: alloc_dealloc_mismatch=0
CLICOLOR_FORCE: 1
steps:
- uses: actions/checkout@v4

# ==== RESTORE CACHE ====
- name: Restore buildcache Cache
uses: actions/cache/restore@v4
id: restore-buildcache
with:
path: ${{ github.workspace }}/.buildcache
key: buildcache-${{ matrix.config.preset }}-${{ hashFiles('.pkg') }}-${{ hashFiles('**/*.h') }}-${{ hashFiles('**/*.cc') }}
restore-keys: |
buildcache-${{ matrix.config.preset }}-${{ hashFiles('.pkg') }}-${{ hashFiles('**/*.h') }}-
buildcache-${{ matrix.config.preset }}-${{ hashFiles('.pkg') }}-
buildcache-${{ matrix.config.preset }}-

- name: Restore Dependencies Cache
uses: actions/cache/restore@v4
id: restore-deps-cache
with:
path: ${{ github.workspace }}/deps
enableCrossOsArchive: true
key: deps-${{ hashFiles('.pkg') }}
restore-keys: |
deps-

- name: Install Ninja
run: brew install ninja

# ==== BUILD ====
- name: CMake
run: |
git config --global --add safe.directory `pwd`
cmake -G Ninja -S . -B build --preset=${{ matrix.config.preset }}

- name: Build
run: cmake --build build --target osr-extract osr-backend osr-benchmark osr-test

# ==== TESTS ====
- name: Run Tests
run: ./build/osr-test

# ==== DISTRIBUTION ====
- name: Create Distribution
run: |
mkdir osr
mv build/osr-extract osr/osr-extract
mv build/osr-backend osr/osr-backend
tar cjf osr-${{ matrix.config.preset }}.tar.bz2 osr

- name: Upload Distribution
uses: actions/upload-artifact@v4
with:
name: osr-${{ matrix.config.preset }}
path: osr-${{ matrix.config.preset }}.tar.bz2

# ==== RELEASE ====
- name: Upload Release
if: github.event.action == 'published'
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./osr-${{ matrix.config.preset }}.tar.bz2
asset_name: osr-${{ matrix.config.preset }}.tar.bz2
asset_content_type: application/x-tar

# ==== SAVE CACHE ====
- name: Save buildcache Cache
if: always()
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/.buildcache
key: ${{ steps.restore-buildcache.outputs.cache-primary-key }}

- name: Save Dependencies Cache
if: always()
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/deps
key: ${{ steps.restore-deps-cache.outputs.cache-primary-key }}
enableCrossOsArchive: true

linux:
runs-on: [ self-hosted, linux, x64, "${{ matrix.config.preset }}" ]
container:
image: ghcr.io/motis-project/docker-cpp-build
volumes:
- ${{ github.event.repository.name }}-${{ matrix.config.preset }}-deps:/deps
- ${{ github.event.repository.name }}-${{ matrix.config.preset }}-buildcache:/buildcache
strategy:
fail-fast: false
matrix:
config:
- preset: linux-amd64-release
artifact: linux-amd64
- preset: linux-arm64-release
artifact: linux-arm64
emulator: qemu-aarch64-static
- preset: clang-tidy
- preset: linux-sanitizer
- preset: linux-debug
emulator: valgrind --leak-check=full --error-exitcode=1
env:
BUILDCACHE_DIR: /buildcache
BUILDCACHE_COMPRESS: true
BUILDCACHE_ACCURACY: SLOPPY
BUILDCACHE_DIRECT_MODE: true
BUILDCACHE_MAX_CACHE_SIZE: 2147483648
BUILDCACHE_LUA_PATH: ${{ github.workspace }}/tools
UBSAN_OPTIONS: halt_on_error=1:abort_on_error=1
ASAN_OPTIONS: alloc_dealloc_mismatch=0
steps:
- uses: actions/checkout@v4

- name: Get deps
run: ln -s /deps deps

- name: CMake
run: |
git config --global --add safe.directory `pwd`
cmake -G Ninja -S . -B build --preset=${{ matrix.config.preset }}

# ==== BUILD ====
- name: Build
run: |
buildcache -z
cmake --build build --target osr-extract osr-backend osr-benchmark osr-test
buildcache -s

# ==== TESTS ====
- name: Run Tests
if: ${{ !matrix.config.skiptests }}
run: ${{ matrix.config.emulator }} build/osr-test

# ==== DISTRIBUTION ====
- name: Create Distribution
if: matrix.config.artifact
run: |
mkdir osr
mv web osr/web
mv build/osr-extract osr/osr-extract
mv build/osr-backend osr/osr-backend
tar cjf osr-${{ matrix.config.artifact }}.tar.bz2 osr

- name: Upload Distribution
if: matrix.config.artifact
uses: actions/upload-artifact@v4
with:
name: osr-${{ matrix.config.artifact }}
path: osr-${{ matrix.config.artifact }}.tar.bz2

# ==== RELEASE ====
- name: Upload Release
if: github.event.action == 'published' && matrix.config.artifact
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./osr-${{ matrix.config.artifact }}.tar.bz2
asset_name: osr-${{ matrix.config.artifact }}.tar.bz2
asset_content_type: application/x-tar
8 changes: 6 additions & 2 deletions .pkg
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
[boost]
[email protected]:motis-project/boost.git
branch=master
commit=60cae66449fa3c9599b2b7d3d5d44c65301ed3a3
[osmium]
[email protected]:motis-project/libosmium.git
branch=master
Expand Down Expand Up @@ -33,7 +37,7 @@
[tiles]
[email protected]:motis-project/tiles.git
branch=master
commit=1b99290ba3ff16144afcdb04f6ca4e593d361c70
commit=64f297ea0f782d04c89e82c6d478a1dd453e5f70
[mimalloc]
[email protected]:motis-project/mimalloc.git
branch=master
Expand All @@ -57,7 +61,7 @@
[expat]
[email protected]:motis-project/expat.git
branch=master
commit=b8c26c40f1900899b95c795705e0252fc0c1350c
commit=20b3b3e7dde39ee18c27c238b8d1246019ecb147
[net]
[email protected]:motis-project/net.git
branch=master
Expand Down
13 changes: 6 additions & 7 deletions .pkg.lock
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
15434619220611677274
17387922825967387713
cista ebd5eb5cc7f82c414d3e060a3937d497189a103f
zlib d1c943390ba4f97aa2f50bedc629b6d29027fa0e
boost be5235eb2258d2ec19e32546ab767a62311d9b46
boost 60cae66449fa3c9599b2b7d3d5d44c65301ed3a3
conf a32d491bd54800310a53ccba13f4ee9f6736ff3e
expat b8c26c40f1900899b95c795705e0252fc0c1350c
expat 20b3b3e7dde39ee18c27c238b8d1246019ecb147
fmt edb385ac526c24bc917ec4a41bb0edb28f0ca59e
doctest 70e8f76437b76dd5e9c0a2eb9b907df190ab71a0
geo ee76668f0f0454e4acd3c769e00c6868620e3490
Expand All @@ -14,17 +14,16 @@ libressl 390253a44ceef00eb620c38606588414326e9f23
net 44674d2f3917e20b7019a0f7254d332522c36fb7
protozero 8c9f3fa97c2cfdceef86d0b61818ae98e9328f29
rapidjson e7a1ac95c7840c6f4351abead02b1f7a02874197
Catch2 47d56f28a9801911c048d011b375e5631dbb658f
LuaJIT 4638e9198beb2f14bd1c90b42aff744469eed404
LuaJIT babeae2c3311bed245ee86f3e35a1f244e3da60b
clipper 904f0e6644c7f01c176443613be8f7788d59c658
concurrentqueue 54fdce755d3e52c785d6d9d7d91c94615495868c
lmdb 39d8127e5697b1323a67e61c3ad8f087384c7429
miniz 1edbdece9d71dc65c6ff405572ee37cbdcef7af4
res c500c261531a2b8b8d475fc9d42c075f28f72aaf
res 7d97784ba785ce8a2677ea77164040fde484fb04
pbf-sdf-fonts 91b369e4eb8a618e0a83b0c04b1b08632ea872c4
sol2 fdb0f8a60e48aa737f0a8d73edede48627f0c984
utl 4c1503afe58e209977d9a1e3db6a6b271a50c521
variant 5aa73631dc969087c77433a5cdef246303051f69
tiles 1b99290ba3ff16144afcdb04f6ca4e593d361c70
tiles 64f297ea0f782d04c89e82c6d478a1dd453e5f70
unordered_dense c11595a7743d20622637584bddf77243d72ae152
rtree.c 6ed73a7dc4f1184f2b5b2acd8ac1c2b28a273057
Loading
Loading