name: Bigfoot on: push: branches: - '**' workflow_dispatch: jobs: conan-dependencies: runs-on: ubuntu-latest timeout-minutes: 120 container: image: git.romainboullard.com/bigfootdev/linuxbigfootbuilder:main volumes: - /srv/romainboullard.com/caches/ccache:/ccache env: ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }} ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} CCACHE_DIR: /ccache CCACHE_MAXSIZE: 10G CCACHE_BASEDIR: /root/.conan2 CCACHE_NOHASHDIR: "true" CCACHE_COMPILERCHECK: "%compiler% -dumpversion" name: "Build And Upload Conan Dependencies to BigfootPackages" steps: - name: Install Node.js run: apt-get update && apt-get install -y nodejs - name: Checkout repository uses: actions/checkout@v6 with: submodules: recursive - name: Reset ccache stats run: ccache --zero-stats - name: Build run: | for build_type in Debug RelWithDebInfo Release; do conan install . --remote=bigfootpackages \ -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang \ --build=missing \ -s build_type=$build_type \ -o bigfoot/*:build_tests=True \ -o bigfoot/*:tracy=False \ -o bigfoot/*:build_tools=True \ -o bigfoot/*:vulkan=True done conan install . --remote=bigfootpackages \ -pr:h=./ConanProfiles/clang_asan -pr:b=./ConanProfiles/clang_asan \ --build=missing \ -s build_type=$build_type \ -o bigfoot/*:build_tests=True \ -o bigfoot/*:tracy=False \ -o bigfoot/*:build_tools=True \ -o bigfoot/*:vulkan=True - name: Show ccache stats run: ccache --show-stats - name: Upload run: CONAN_LOGIN_USERNAME=${ARTIFACTORY_USER} CONAN_PASSWORD=${ARTIFACTORY_PASSWORD} conan upload "*" -r bigfootpackages --confirm build-and-test: needs: conan-dependencies runs-on: ubuntu-latest timeout-minutes: 120 container: image: git.romainboullard.com/bigfootdev/linuxbigfootbuilder:main volumes: - /srv/romainboullard.com/caches/ccache:/ccache env: CCACHE_DIR: /ccache CCACHE_MAXSIZE: 10G CCACHE_COMPILERCHECK: "%compiler% -dumpversion" strategy: matrix: build_type: ["Debug", "RelWithDebInfo", "Release"] unity_build: ["ON", "OFF"] conan_profile: ["./ConanProfiles/clang", "./ConanProfiles/clang_asan"] name: "Build & Test ${{ matrix.build_type }} with ${{ matrix.conan_profile }} (Unity Build: ${{ matrix.unity_build }})" steps: - name: Install Node.js run: apt-get update && apt-get install -y nodejs - name: Checkout repository uses: actions/checkout@v6 with: submodules: recursive - name: Reset ccache stats run: ccache --zero-stats - name: Build run: | conan install . --remote=bigfootpackages -pr:h=${{ matrix.conan_profile }} -pr:b=${{ matrix.conan_profile }} --build=never -s build_type=${{ matrix.build_type }} -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=False -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True cmake -S . -B ./build/${{ matrix.build_type }} --toolchain ./build/${{ matrix.build_type }}/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_UNITY_BUILD=${{ matrix.unity_build }} -G "Ninja" cmake --build build/${{ matrix.build_type }} --parallel $(nproc) - name: Show ccache stats run: ccache --show-stats - name: Unit Tests run: | cd ./build/${{ matrix.build_type }} xvfb-run ctest . --output-on-failure clang-format: runs-on: ubuntu-latest timeout-minutes: 120 container: image: git.romainboullard.com/bigfootdev/linuxbigfootbuilder:main name: "Clang Format Checks" steps: - name: Install Node.js run: apt-get update && apt-get install -y nodejs - name: Checkout repository uses: actions/checkout@v6 with: submodules: recursive - name: Clang Format Checks run: chmod +x format.sh && ./format.sh --check Bigfoot