Multi-threaded custom pipelines #4870
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [ push, pull_request ] | |
jobs: | |
build-linux: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs | |
run: | | |
bake --strict | |
build-macos: | |
runs-on: macOS-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs | |
run: | | |
bake --strict | |
build-windows: | |
runs-on: windows-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ilammy/msvc-dev-cmd@v1 | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
cd bake\build-Windows | |
nmake | |
cd .. | |
./bake setup --local | |
- name: build flecs | |
run: bake/bake --strict | |
build-configs: | |
needs: build-linux | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
compiler: | |
- cc: gcc-7 | |
cxx: g++-7 | |
- cc: gcc-8 | |
cxx: g++-8 | |
- cc: gcc-9 | |
cxx: g++-9 | |
- cc: gcc-10 | |
cxx: g++-10 | |
- cc: gcc-11 | |
cxx: g++-11 | |
- cc: clang-8 | |
cxx: clang++-8 | |
- cc: clang-9 | |
cxx: clang++-9 | |
- cc: clang-10 | |
cxx: clang++-10 | |
- cc: clang-11 | |
cxx: clang++-11 | |
- cc: clang-12 | |
cxx: clang++-12 | |
env: | |
CC: ${{ matrix.compiler.cc }} | |
CXX: ${{ matrix.compiler.cxx }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: hack sources.list | |
run: sudo sed -i 's|http://azure.archive.ubuntu.com/ubuntu/|https://mirror.enzu.com/ubuntu//|g' /etc/apt/sources.list | |
- name: install compiler | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y ${{ matrix.compiler.cc }} | |
sudo apt-get install -y ${{ matrix.compiler.cxx }} | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs (debug) | |
run: | | |
bake --strict --cfg debug | |
- name: build flecs (release) | |
run: | | |
bake --strict --cfg release | |
- name: build examples (debug) | |
run: | | |
bake examples/c --strict --cfg debug | |
bake examples/cpp --strict --cfg debug | |
bake examples/os_api --strict --cfg debug | |
bake examples/os_api/bake --strict --cfg debug | |
- name: build examples (release) | |
run: | | |
bake examples/c --strict --cfg release | |
bake examples/cpp --strict --cfg release | |
bake examples/os_api --strict --cfg release | |
bake examples/os_api/bake --strict --cfg release | |
build-configs-windows: | |
needs: [build-windows] | |
runs-on: windows-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ilammy/msvc-dev-cmd@v1 | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
cd bake\build-Windows | |
nmake | |
cd .. | |
./bake setup --local | |
- name: build flecs (debug) | |
run: bake/bake --strict --cfg debug | |
- name: build flecs (release) | |
run: bake/bake --strict --cfg release | |
- name: build examples (debug) | |
run: bake/bake examples --strict --cfg debug | |
- name: build examples (release) | |
run: bake/bake examples --strict --cfg debug | |
build-configs-windows-cmake: | |
runs-on: windows-latest | |
timeout-minutes: 30 | |
strategy: | |
matrix: | |
toolset: [default, v141, v142, clang-cl] | |
include: | |
- toolset: v141 | |
toolset_option: -T"v141" | |
- toolset: v142 | |
toolset_option: -T"v142" | |
- toolset: clang-cl | |
toolset_option: -T"ClangCl" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: create cmake build folders | |
run: | | |
mkdir cmake_build | |
mkdir examples/c/cmake_build | |
mkdir examples/cpp/cmake_build | |
- name: build flecs | |
working-directory: cmake_build | |
run: | | |
cmake ${{ matrix.toolset_option }} .. | |
cmake --build . -j 4 | |
- name: build c examples | |
working-directory: examples/c/cmake_build | |
run: | | |
cmake ${{ matrix.toolset_option }} .. | |
cmake --build . -j 4 | |
- name: build c++ examples | |
working-directory: examples/cpp/cmake_build | |
run: | | |
cmake ${{ matrix.toolset_option }} .. | |
cmake --build . -j 4 | |
test-c-unix: | |
needs: [build-linux, build-macos] | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macOS-latest ] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: compiler version | |
run: | | |
gcc --version | |
clang --version | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs | |
run: bake --strict | |
- name: test api | |
run: bake run test/api -- -j 8 | |
- name: test addons | |
run: bake run test/addons -- -j 8 | |
- name: test meta | |
run: bake run test/meta -- -j 8 | |
- name: test collections | |
run: bake run test/collections -- -j 8 | |
test-cpp-unix: | |
needs: [build-linux] | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
compiler: | |
# Currently not supported for C++ API, as enum reflection doesn't work | |
# - cc: gcc-7 | |
# cxx: g++-7 | |
# - cc: gcc-8 | |
# cxx: g++-8 | |
- cc: gcc-9 | |
cxx: g++-9 | |
- cc: gcc-10 | |
cxx: g++-10 | |
- cc: gcc-11 | |
cxx: g++-11 | |
- cc: clang-8 | |
cxx: clang++-8 | |
- cc: clang-9 | |
cxx: clang++-9 | |
- cc: clang-10 | |
cxx: clang++-10 | |
- cc: clang-11 | |
cxx: clang++-11 | |
- cc: clang-12 | |
cxx: clang++-12 | |
env: | |
CC: ${{ matrix.compiler.cc }} | |
CXX: ${{ matrix.compiler.cxx }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: hack sources.list | |
run: sudo sed -i 's|http://azure.archive.ubuntu.com/ubuntu/|https://mirror.enzu.com/ubuntu//|g' /etc/apt/sources.list | |
- name: install compiler | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y ${{ matrix.compiler.cc }} | |
sudo apt-get install -y ${{ matrix.compiler.cxx }} | |
- name: compiler version | |
run: | | |
${{ matrix.compiler.cc }} --version | |
${{ matrix.compiler.cxx }} --version | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs | |
run: bake --strict | |
- name: test c++ | |
run: bake run test/cpp_api -- -j 8 | |
test-cpp-macos: | |
needs: [build-macos] | |
runs-on: ${{ matrix.os.version }} | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- { version: macOS-11, xcode: '11.7' } | |
- { version: macOS-11, xcode: '12.4' } | |
- { version: macOS-11, xcode: '13.0' } | |
- { version: macOS-12, xcode: '13.1' } | |
- { version: macOS-12, xcode: '14.0' } | |
env: | |
CC: clang | |
CXX: clang++ | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: ${{ matrix.os.xcode }} | |
- name: compiler version | |
run: | | |
clang --version | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs | |
run: bake --strict | |
- name: test c++ | |
run: bake run test/cpp_api -- -j 8 | |
test-windows: | |
needs: build-windows | |
runs-on: windows-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ilammy/msvc-dev-cmd@v1 | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
cd bake\build-Windows | |
nmake | |
cd .. | |
./bake setup --local | |
- name: build flecs | |
run: bake/bake --strict | |
- name: test api | |
run: bake/bake run test\api -- -j 8 | |
- name: test addons | |
run: bake/bake run test\addons -- -j 8 | |
- name: test meta | |
run: bake/bake run test\meta -- -j 8 | |
- name: test collections | |
run: bake/bake run test\collections -- -j 8 | |
- name: test c++ | |
run: bake/bake run test\cpp_api -- -j 8 | |
analyze-scan-build: | |
needs: build-linux | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: hack sources.list | |
run: | | |
sudo sed -i 's|http://azure.archive.ubuntu.com/ubuntu/|https://mirror.enzu.com/ubuntu//|g' /etc/apt/sources.list | |
sudo apt-get update | |
- name: install clang-build | |
run: | | |
sudo apt-get install -y clang-tools | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: run scan-build | |
run: | | |
scan-build --status-bugs bake | |
analyze-sanitized-api: | |
needs: build-macos | |
runs-on: macOS-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs | |
run: bake --strict | |
- name: run tests | |
run: | | |
bake run test/api --cfg sanitize -- -j 8 | |
analyze-sanitized-addons: | |
needs: build-macos | |
runs-on: macOS-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs | |
run: bake --strict | |
- name: run tests | |
run: | | |
bake run test/addons --cfg sanitize -- -j 8 | |
analyze-sanitized-meta: | |
needs: build-macos | |
runs-on: macOS-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs | |
run: bake --strict | |
- name: run tests | |
run: | | |
bake run test/meta --cfg sanitize -- -j 8 | |
analyze-sanitized-collections: | |
needs: build-macos | |
runs-on: macOS-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs | |
run: bake --strict | |
- name: run tests | |
run: | | |
bake run test/collections --cfg sanitize -- -j 8 | |
analyze-sanitized-cpp_api: | |
needs: build-macos | |
runs-on: macOS-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: build flecs | |
run: bake --strict | |
- name: run tests | |
run: | | |
bake run test/cpp_api --cfg sanitize -- -j 8 | |
buildsystem-cmake: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macOS-latest ] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: create cmake build folders | |
run: | | |
mkdir cmake_build | |
mkdir examples/c/cmake_build | |
mkdir examples/cpp/cmake_build | |
- name: build flecs | |
working-directory: cmake_build | |
run: | | |
cmake .. | |
cmake --build . -j 4 | |
- name: build c examples | |
working-directory: examples/c/cmake_build | |
run: | | |
cmake .. | |
cmake --build . -j 4 | |
- name: build c++ examples | |
working-directory: examples/cpp/cmake_build | |
run: | | |
cmake .. | |
cmake --build . -j 4 | |
buildsystem-meson: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install meson | |
run: | | |
pip3 install meson | |
pip3 install ninja==1.10.2.4 | |
- name: create build folder | |
run: meson meson_build | |
- name: build flecs | |
working-directory: meson_build | |
run: | | |
meson compile | |
flecs-custom-builds: | |
needs: build-linux | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
compiler: [ gcc, clang ] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install bake | |
run: | | |
git clone https://github.com/SanderMertens/bake | |
make -C bake/build-$(uname) | |
bake/bake setup | |
- name: FLECS_SOFT_ASSERT flag | |
run: | | |
bake rebuild --strict -D FLECS_SOFT_ASSERT | |
bake rebuild --strict --cfg release -D FLECS_SOFT_ASSERT | |
- name: FLECS_KEEP_ASSERT flag | |
run: | | |
bake rebuild --strict -D FLECS_KEEP_ASSERT | |
bake rebuild --strict --cfg release -D FLECS_KEEP_ASSERT | |
- name: no extensions | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD | |
- name: FLECS_SYSTEM | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_SYSTEM | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_SYSTEM | |
- name: FLECS_PIPELINE | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_PIPELINE | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_PIPELINE | |
- name: FLECS_TIMER | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_TIMER | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_TIMER | |
- name: FLECS_MODULE | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_MODULE | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_MODULE | |
- name: FLECS_SNAPSHOT | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_SNAPSHOT | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_SNAPSHOT | |
- name: FLECS_STATS | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_STATS | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_STATS | |
- name: FLECS_PARSER | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_PARSER | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_PARSER | |
- name: FLECS_PLECS | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_PLECS | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_PLECS | |
- name: FLECS_META | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_META | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_META | |
- name: FLECS_META_C | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_META_C | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_META_C | |
- name: FLECS_EXPR | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_EXPR | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_EXPR | |
- name: FLECS_JSON | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_JSON | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_JSON | |
- name: FLECS_DOC | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_DOC | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_DOC | |
- name: FLECS_COREDOC | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_COREDOC | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_COREDOC | |
- name: FLECS_LOG | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_LOG | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_LOG | |
- name: FLECS_APP | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_APP | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_APP | |
- name: FLECS_OS_API_IMPL | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_OS_API_IMPL | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_OS_API_IMPL | |
- name: FLECS_HTTP | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_HTTP | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_HTTP | |
- name: FLECS_REST | |
run: | | |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_REST | |
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_REST | |
- name: FLECS_NO_LOG | |
run: | | |
bake rebuild --strict -D FLECS_NO_LOG | |
bake rebuild --strict --cfg release -D FLECS_NO_LOG | |
- name: custom_build tests | |
run: | | |
bake rebuild test/custom_builds --strict | |
bake runall test/custom_builds | |
flecs-amalgamated: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
compiler: [ gcc, clang ] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: build flecs | |
run: ${{ matrix.compiler }} flecs.c --shared -fPIC -pedantic -Wall -Wextra -Wno-unused-parameter -Werror -Wshadow -Wconversion -Wno-missing-field-initializers |