name: CI on: [push, pull_request] jobs: linux: name: Linux runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Install dependencies run: | sudo dpkg --add-architecture i386 sudo apt-get update -y sudo apt-get install -y \ expect \ gcc-multilib \ libgcc-s1:i386 \ acl \ libacl1-dev \ libacl1:i386 \ attr \ libcap2-bin \ libcap-dev \ libcap2:i386 \ libonig-dev \ libonig5:i386 \ liburing-dev # Ubuntu doesn't let you install the -dev packages for both amd64 and # i386 at once, so we make our own symlinks to fix -m32 -lacl -l... sudo ln -s libacl.so.1 /lib/i386-linux-gnu/libacl.so sudo ln -s libcap.so.2 /lib/i386-linux-gnu/libcap.so sudo ln -s libonig.so.5 /lib/i386-linux-gnu/libonig.so # Work around https://github.com/actions/runner-images/issues/9491 sudo sysctl vm.mmap_rnd_bits=28 - name: Run tests run: | make -j$(nproc) distcheck macos: name: macOS runs-on: macos-14 steps: - uses: actions/checkout@v4 - name: Install dependencies run: | brew install \ bash \ expect - name: Run tests run: | jobs=$(sysctl -n hw.ncpu) make -j$jobs distcheck freebsd: name: FreeBSD runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Run tests uses: cross-platform-actions/action@v0.24.0 with: operating_system: freebsd version: "14.0" sync_files: runner-to-vm run: | sudo pkg install -y \ bash \ expect \ oniguruma \ pkgconf \ tcl-wrapper sudo mount -t fdescfs none /dev/fd make -j$(nproc) distcheck openbsd: name: OpenBSD runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Run tests uses: vmactions/openbsd-vm@v1 with: release: "7.5" usesh: true copyback: false prepare: | pkg_add \ bash \ expect \ gmake \ oniguruma adduser -group USER -batch action wheel >/etc/doas.conf run: | chown -R action:action . jobs=$(sysctl -n hw.ncpu) doas -u action gmake config doas -u action gmake -j$jobs check TEST_FLAGS="--sudo=doas --verbose=skipped" netbsd: name: NetBSD runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Run tests uses: vmactions/netbsd-vm@v1 with: release: "10.0" usesh: true copyback: false prepare: | PATH="/sbin:/usr/sbin:$PATH" pkg_add \ bash \ clang \ oniguruma \ pkgconf \ sudo \ tcl-expect useradd -m -G wheel -g =uid action echo "%wheel ALL=(ALL) NOPASSWD: ALL" >>/usr/pkg/etc/sudoers run: | PATH="/sbin:/usr/sbin:$PATH" chown -R action:action . jobs=$(sysctl -n hw.ncpu) sudo -u action make config CC=clang sudo -u action make -j$jobs check TEST_FLAGS="--sudo --verbose=skipped" dragonflybsd: name: DragonFly BSD runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Run tests uses: vmactions/dragonflybsd-vm@v1 with: release: "6.4.0" usesh: true copyback: false prepare: | pkg install -y \ bash \ expect \ oniguruma \ pkgconf \ sudo \ tcl-wrapper pw useradd -n action -m -G wheel -s /usr/local/bin/bash echo "%wheel ALL=(ALL) NOPASSWD: ALL" >>/usr/local/etc/sudoers run: | chown -R action:action . jobs=$(sysctl -n hw.ncpu) sudo -u action make config sudo -u action make -j$jobs check TEST_FLAGS="--sudo --verbose=skipped" omnios: name: OmniOS runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Run tests uses: vmactions/omnios-vm@v1 with: release: "r151048" usesh: true copyback: false prepare: | pkg install \ bash \ build-essential \ expect \ gnu-make \ onig \ sudo useradd -m -g staff action echo "%staff ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers run: | PATH="/usr/xpg4/bin:$PATH" chown -R action:staff . jobs=$(getconf NPROCESSORS_ONLN) sudo -u action gmake config sudo -u action gmake -j$jobs check TEST_FLAGS="--sudo --verbose=skipped"