Skip to content

CI

CI #791

Workflow file for this run

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:
# Note: macOS 12 runs on x86 hardware, and 14 runs on M1 hardware
os: ['macos-12', 'macos-14', 'windows-2022']
llvm: ['11', '12', '13', '14', '15', '16', '17', '18']
cuda: ['0', '1']
lua: ['luajit', 'moonjit']
exclude:
# macOS: exclude cuda
- os: 'macos-12'
cuda: '1'
- os: 'macos-14'
cuda: '1'
# macOS 14: exclude Moonjit (M1 requires LuaJIT)
- os: 'macos-14'
lua: 'moonjit'
# macOS 14: exclude LLVM 11-15
- os: 'macos-14'
llvm: '11'
- os: 'macos-14'
llvm: '12'
- os: 'macos-14'
llvm: '13'
- os: 'macos-14'
llvm: '14'
- os: 'macos-14'
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 12
- llvm: '11'
lua: 'moonjit'
- llvm: '13'
lua: 'moonjit'
- llvm: '14'
lua: 'moonjit'
- llvm: '15'
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-18.04']
llvm: ['11', '12.0.1', '13.0.1', '14.0.6', '15.0.2', '16.0.3', '17.0.5', '18.1.7']
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.2'
cuda: '1'
- llvm: '16.0.3'
cuda: '1'
- llvm: '17.0.5'
cuda: '1'
- llvm: '18.1.7'
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.2'
lua: 'moonjit'
- llvm: '16.0.3'
lua: 'moonjit'
- llvm: '17.0.5'
lua: 'moonjit'
- llvm: '18.1.7'
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 18.04 "18.04 20.04 22.04 24.04" "" 18.1.7 luajit prebuilt 2
- uses: actions/upload-artifact@v4
with:
name: docker-ubuntu-18.04-x86_64-llvm-18
path: |
terra-*.tar.xz
terra-*.7z
nix:
name: Nix Build (nixpkgs-${{ matrix.nixpkgs }}, enableCUDA=${{ matrix.cuda }})
runs-on: ubuntu-latest
strategy:
matrix:
nixpkgs: ['unstable', '24.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