# https://github.com/actions/runner-images#available-images name: Build & Test on: [push, pull_request] permissions: contents: read jobs: GCC-CLANG: name: "${{ matrix.os }}-${{ matrix.altname || matrix.cc }}" runs-on: ${{ matrix.os }} timeout-minutes: 10 strategy: fail-fast: false max-parallel: 8 matrix: include: - {os: ubuntu-24.04, cc: gcc, cxx: g++} - {os: ubuntu-24.04, cc: clang, cxx: clang++} - {os: ubuntu-22.04, cc: gcc, cxx: g++} - {os: ubuntu-22.04, cc: clang, cxx: clang++} - {os: macos-15, cc: clang, cxx: clang++} - {os: macos-14, cc: clang, cxx: clang++} - {os: windows-2025, cc: gcc, cxx: g++, altname: "mingw-gcc"} - {os: windows-2022, cc: gcc, cxx: g++, altname: "mingw-gcc"} env: MRUBY_CONFIG: ci/gcc-clang CC: ${{ matrix.cc }} CXX: ${{ matrix.cxx }} LD: ${{ matrix.cc }} steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Ruby version run: ruby -v - name: Compiler version run: ${{ env.CC }} --version - name: Build and test run: rake -m test:run:serial Cosmopolitan: runs-on: ubuntu-24.04 timeout-minutes: 15 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Ruby version run: ruby -v - name: Cache cosmocc uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 id: cache-cosmocc with: path: ~/cosmo key: cosmocc-${{ runner.os }}-20260104 - name: Install cosmocc if: steps.cache-cosmocc.outputs.cache-hit != 'true' run: | mkdir -p ~/cosmo && cd ~/cosmo wget https://cosmo.zip/pub/cosmocc/cosmocc.zip unzip cosmocc.zip - name: Build and test run: | COSMO_ROOT=~/cosmo rake -m test:run:serial MRUBY_CONFIG=cosmopolitan Windows-VC: runs-on: windows-2022 timeout-minutes: 10 env: MRUBY_CONFIG: ci/msvc steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Ruby version run: ruby -v - name: Build and test shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" rake -m test:run:serial