Skip to content

Commit

Permalink
ci (#10)
Browse files Browse the repository at this point in the history
  • Loading branch information
felixguendling authored Apr 29, 2024
1 parent be05e67 commit 609d074
Show file tree
Hide file tree
Showing 16 changed files with 977 additions and 82 deletions.
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

0 comments on commit 609d074

Please sign in to comment.