CI #145
This file contains hidden or 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: | |
| schedule: | |
| - cron: '5 4 * * 2' # once a week on Tuesday | |
| jobs: | |
| check_format: | |
| name: Check Format | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - run: ./travis.sh | |
| env: | |
| CHECK_CLANG_FORMAT: 1 | |
| build: | |
| name: Build (${{ matrix.os }}, llvm-${{ matrix.llvm }}, cuda=${{ matrix.cuda }}, ${{ matrix.lua }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: ['macos-15-intel', 'macos-15', 'windows-2022'] | |
| llvm: ['11', '12', '13', '14', '15', '16', '17', '18'] | |
| cuda: ['0', '1'] | |
| lua: ['luajit', 'moonjit'] | |
| exclude: | |
| # macOS: exclude cuda | |
| - os: 'macos-15-intel' | |
| cuda: '1' | |
| - os: 'macos-15' | |
| cuda: '1' | |
| # macOS 15 ARM: exclude Moonjit (M1 requires LuaJIT) | |
| - os: 'macos-15' | |
| lua: 'moonjit' | |
| # macOS 15 Intel: exclude LLVM 11-14 | |
| - os: 'macos-15-intel' | |
| llvm: '11' | |
| - os: 'macos-15-intel' | |
| llvm: '12' | |
| - os: 'macos-15-intel' | |
| llvm: '13' | |
| - os: 'macos-15-intel' | |
| llvm: '14' | |
| # macOS 15 ARM: exclude LLVM 11-15 | |
| - os: 'macos-15' | |
| llvm: '11' | |
| - os: 'macos-15' | |
| llvm: '12' | |
| - os: 'macos-15' | |
| llvm: '13' | |
| - os: 'macos-15' | |
| llvm: '14' | |
| - os: 'macos-15' | |
| llvm: '15' | |
| # Windows: exclude LLVM 12-18 | |
| - os: 'windows-2022' | |
| llvm: '12' | |
| - os: 'windows-2022' | |
| llvm: '13' | |
| - os: 'windows-2022' | |
| llvm: '14' | |
| - os: 'windows-2022' | |
| llvm: '15' | |
| - os: 'windows-2022' | |
| llvm: '16' | |
| - os: 'windows-2022' | |
| llvm: '17' | |
| - os: 'windows-2022' | |
| llvm: '18' | |
| # CUDA: only LLVM 11 | |
| - llvm: '12' | |
| cuda: '1' | |
| - llvm: '13' | |
| cuda: '1' | |
| - llvm: '14' | |
| cuda: '1' | |
| - llvm: '15' | |
| cuda: '1' | |
| - llvm: '16' | |
| cuda: '1' | |
| - llvm: '17' | |
| cuda: '1' | |
| - llvm: '18' | |
| cuda: '1' | |
| # Moonjit: only LLVM 15 | |
| - llvm: '11' | |
| lua: 'moonjit' | |
| - llvm: '12' | |
| lua: 'moonjit' | |
| - llvm: '13' | |
| lua: 'moonjit' | |
| - llvm: '14' | |
| lua: 'moonjit' | |
| - llvm: '16' | |
| lua: 'moonjit' | |
| - llvm: '17' | |
| lua: 'moonjit' | |
| - llvm: '18' | |
| lua: 'moonjit' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - run: ./travis.sh | |
| shell: bash | |
| env: | |
| LLVM_VERSION: ${{ matrix.llvm }} | |
| USE_CUDA: ${{ matrix.cuda }} | |
| STATIC_LLVM: 1 | |
| STATIC_LUAJIT: 1 | |
| SLIB_INCLUDE_LLVM: 1 | |
| SLIB_INCLUDE_LUAJIT: 1 | |
| TERRA_LUA: ${{ matrix.lua }} | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: terra-${{ matrix.os }}-x86_64-llvm-${{ matrix.llvm }} | |
| path: | | |
| terra-*.tar.xz | |
| terra-*.7z | |
| docker: | |
| name: Docker (${{ matrix.distro }}, llvm-${{ matrix.llvm }}, ${{ matrix.lua }}, static=${{ matrix.static }}, slib=${{ matrix.slib }}, cuda=${{ matrix.cuda }}, ${{ matrix.variant }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| distro: ['ubuntu-20.04'] | |
| llvm: ['11', '12.0.1', '13.0.1', '14.0.6', '15.0.7', '16.0.6', '17.0.6', '18.1.8'] | |
| lua: ['luajit', 'moonjit'] | |
| cuda: ['0', '1'] | |
| test: ['1'] | |
| exclude: | |
| # CUDA with LLVM 13 only: | |
| - llvm: '11' | |
| cuda: '1' | |
| - llvm: '12.0.1' | |
| cuda: '1' | |
| - llvm: '14.0.6' | |
| cuda: '1' | |
| - llvm: '15.0.7' | |
| cuda: '1' | |
| - llvm: '16.0.6' | |
| cuda: '1' | |
| - llvm: '17.0.6' | |
| cuda: '1' | |
| - llvm: '18.1.8' | |
| cuda: '1' | |
| # Moonjit with LLVM 14 only: | |
| - llvm: '11' | |
| lua: 'moonjit' | |
| - llvm: '12.0.1' | |
| lua: 'moonjit' | |
| - llvm: '13.0.1' | |
| lua: 'moonjit' | |
| - llvm: '15.0.7' | |
| lua: 'moonjit' | |
| - llvm: '16.0.6' | |
| lua: 'moonjit' | |
| - llvm: '17.0.6' | |
| lua: 'moonjit' | |
| - llvm: '18.1.8' | |
| lua: 'moonjit' | |
| include: | |
| # Defaults: | |
| - slib: '1' | |
| - static: '1' | |
| # Assign variants to the basic configurations: | |
| - variant: 'prebuilt' | |
| - llvm: '11' | |
| variant: 'upstream' | |
| # Some additional configurations: | |
| # LLVM 12, 13, 14 on Ubuntu 22.04 | |
| - distro: 'ubuntu-22.04' | |
| llvm: '12' | |
| lua: 'luajit' | |
| cuda: '0' | |
| variant: 'package' | |
| slib: '1' | |
| static: '1' | |
| test: '1' | |
| - distro: 'ubuntu-22.04' | |
| llvm: '13' | |
| lua: 'luajit' | |
| cuda: '0' | |
| variant: 'package' | |
| slib: '1' | |
| static: '1' | |
| test: '1' | |
| - distro: 'ubuntu-22.04' | |
| llvm: '14' | |
| lua: 'luajit' | |
| cuda: '0' | |
| variant: 'package' | |
| slib: '1' | |
| static: '1' | |
| test: '1' | |
| # LLVM 14, no-slib/no-static, Ubuntu 22.04 | |
| - distro: 'ubuntu-22.04' | |
| llvm: '14' | |
| lua: 'luajit' | |
| cuda: '0' | |
| variant: 'package' | |
| slib: '0' | |
| static: '1' | |
| test: '1' | |
| # - distro: 'ubuntu-22.04' | |
| # llvm: '14' | |
| # lua: 'luajit' | |
| # cuda: '0' | |
| # variant: 'package' | |
| # slib: '0' | |
| # static: '0' | |
| # test: '1' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - run: ./travis.sh | |
| env: | |
| DOCKER_DISTRO: ${{ matrix.distro }} | |
| DOCKER_LLVM: ${{ matrix.llvm }} | |
| DOCKER_LUA: ${{ matrix.lua }} | |
| DOCKER_STATIC: ${{ matrix.static }} | |
| DOCKER_SLIB: ${{ matrix.slib }} | |
| DOCKER_CUDA: ${{ matrix.cuda }} | |
| DOCKER_VARIANT: ${{ matrix.variant }} | |
| DOCKER_TEST: ${{ matrix.test }} | |
| # multiarch: | |
| # name: Multiarch (${{ matrix.distro }}, ${{ matrix.arch }}, llvm-${{ matrix.llvm }}, cuda=${{ matrix.cuda }}, ${{ matrix.variant }}) | |
| # runs-on: ubuntu-latest | |
| # strategy: | |
| # matrix: | |
| # distro: ['ubuntu-18.04'] | |
| # arch: ['arm64', 'ppc64le'] | |
| # llvm: ['11.1.0', '13.0.0'] | |
| # variant: ['prebuilt'] | |
| # cuda: ['0'] | |
| # test: ['0'] | |
| # exclude: | |
| # - arch: 'arm64' | |
| # llvm: '13.0.0' | |
| # - arch: 'ppc64le' | |
| # llvm: '11.1.0' | |
| # steps: | |
| # - uses: actions/checkout@v4 | |
| # - run: ./travis.sh | |
| # env: | |
| # DOCKER_DISTRO: ${{ matrix.distro }} | |
| # DOCKER_ARCH: ${{ matrix.arch }} | |
| # DOCKER_LLVM: ${{ matrix.llvm }} | |
| # DOCKER_CUDA: ${{ matrix.cuda }} | |
| # DOCKER_VARIANT: ${{ matrix.variant }} | |
| # DOCKER_TEST: ${{ matrix.test }} | |
| # - uses: actions/upload-artifact@v4 | |
| # with: | |
| # name: docker-${{ matrix.distro }}-${{ matrix.arch }}-llvm-${{ matrix.llvm }} | |
| # path: | | |
| # terra-*.tar.xz | |
| # terra-*.7z | |
| compat: | |
| name: Compatibility Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - run: ./docker/compatibility_test.sh ubuntu 20.04 "20.04 22.04 24.04 25.04" "" 18.1.8 luajit prebuilt 2 | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: docker-ubuntu-18.04-x86_64-llvm-18 | |
| path: | | |
| terra-*.tar.xz | |
| terra-*.7z | |
| compat_arm64: | |
| name: Compatibility Test (ARM64) | |
| runs-on: ubuntu-24.04-arm | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - run: ./docker/compatibility_test.sh ubuntu 20.04 "20.04 22.04" "" 11.1.0 luajit prebuilt 2 | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: docker-ubuntu-20.04-arm64-llvm-11 | |
| path: | | |
| terra-*.tar.xz | |
| terra-*.7z | |
| nix: | |
| name: Nix Build (nixpkgs-${{ matrix.nixpkgs }}, enableCUDA=${{ matrix.cuda }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| nixpkgs: ['25.05'] | |
| cuda: ['false', 'true'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: cachix/install-nix-action@v13 | |
| with: | |
| nix_path: nixpkgs=channel:nixos-${{ matrix.nixpkgs }} | |
| - run: nix-build --arg enableCUDA ${{ matrix.cuda }} | |
| env: | |
| NIXPKGS_ALLOW_UNFREE: 1 |