# ref: https://github.com/actions/runner-images name: amd64 Linux CMake Python on: push: branches: - main - v99bugfix workflow_dispatch: concurrency: group: ${{github.workflow}}-${{github.ref}} cancel-in-progress: true # Building using the github runner environement directly. env: CCACHE_BASEDIR: ${{github.workspace}} CCACHE_DIR: ${{github.workspace}}/.ccache jobs: native: strategy: matrix: python: [ {version: "3.9"}, #{version: "3.10"}, #{version: "3.11"}, #{version: "3.12"}, {version: "3.13"}, {version: "3.14"}, ] fail-fast: false name: amd64•Linux•CMake•Python${{matrix.python.version}} runs-on: ubuntu-latest env: deps_src_key: amd64_linux_python_deps_src_${{matrix.python.version}} deps_build_key: amd64_linux_python_deps_build_${{matrix.python.version}} ccache_key: amd64_linux_python_ccache_${{matrix.python.version}} steps: - uses: actions/checkout@v6 - name: Install Dependencies run: | sudo apt update sudo apt install -y ninja-build ccache swig swig -version - name: Setup Python uses: actions/setup-python@v6 with: python-version: ${{matrix.python.version}} - name: Update Path run: echo "$HOME/.local/bin" >> $GITHUB_PATH # RESTORING CACHES - name: Restore CMake dependency source code uses: actions/cache/restore@v5 id: deps_src_restore with: key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}} path: ${{github.workspace}}/build/_deps/*-src - name: Restore CMake dependency build uses: actions/cache/restore@v5 id: deps_build_restore with: key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}} path: | ${{github.workspace}}/build/_deps/*-build ${{github.workspace}}/build/_deps/*-subbuild - name: Restore CCache uses: actions/cache/restore@v5 id: ccache_restore with: key: ${{env.ccache_key}}-${{github.sha}} restore-keys: ${{env.ccache_key}}- path: ${{env.CCACHE_DIR}} - name: Check CMake run: cmake --version - name: Configure run: > cmake -S. -Bbuild -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_PYTHON=ON -DCMAKE_INSTALL_PREFIX=install - name: Build run: > cmake --build build --config Release --target all -v -j2 - name: Test run: > CTEST_OUTPUT_ON_FAILURE=1 cmake --build build --config Release --target test -v - name: Install run: > cmake --build build --config Release --target install -v - name: CCache stats run: | ccache --show-stats ccache --zero-stats # SAVING CACHES - name: Save CCache if: github.ref == 'refs/heads/main' uses: actions/cache/save@v5 with: key: ${{steps.ccache_restore.outputs.cache-primary-key}} path: ${{env.CCACHE_DIR}} - name: Save CMake dependency build if: github.ref == 'refs/heads/main' uses: actions/cache/save@v5 with: key: ${{steps.deps_build_restore.outputs.cache-primary-key}} path: | ${{github.workspace}}/build/_deps/*-build ${{github.workspace}}/build/_deps/*-subbuild - name: Save CMake dependency source code if: github.ref == 'refs/heads/main' uses: actions/cache/save@v5 with: key: ${{steps.deps_src_restore.outputs.cache-primary-key}} path: ${{github.workspace}}/build/_deps/*-src amd64_linux_cmake_python: runs-on: ubuntu-latest needs: native steps: - uses: actions/checkout@v6