summaryrefslogtreecommitdiffstats
path: root/.github/workflows/ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/ci.yml')
-rw-r--r--.github/workflows/ci.yml202
1 files changed, 202 insertions, 0 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..e47600b
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,202 @@
+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: cross-platform-actions/action@v0.24.0
+ with:
+ operating_system: openbsd
+ version: "7.5"
+ sync_files: runner-to-vm
+
+ run: |
+ sudo pkg_add \
+ bash \
+ expect \
+ gmake \
+ oniguruma
+ jobs=$(sysctl -n hw.ncpu)
+ ./configure MAKE=gmake
+ gmake -j$jobs check TEST_FLAGS="--sudo --verbose=skipped"
+
+ netbsd:
+ name: NetBSD
+
+ runs-on: ubuntu-22.04
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Run tests
+ uses: cross-platform-actions/action@v0.24.0
+ with:
+ operating_system: netbsd
+ version: "10.0"
+ sync_files: runner-to-vm
+
+ run: |
+ PATH="/sbin:/usr/sbin:$PATH"
+ sudo pkgin -y install \
+ bash \
+ oniguruma \
+ pkgconf \
+ tcl-expect
+ jobs=$(sysctl -n hw.ncpu)
+ ./configure
+ 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 ./configure
+ 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 ./configure MAKE=gmake
+ sudo -u action gmake -j$jobs check TEST_FLAGS="--sudo --verbose=skipped"