name: CI on: [push, pull_request] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: linux-x86: name: Linux (x86) runs-on: ubuntu-24.04 # Don't run on both pushes and pull requests if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install dependencies run: | sudo dpkg --add-architecture i386 sudo apt-get update -y sudo apt-get install -y \ mandoc \ 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 - name: Run tests run: | .github/diag.sh make -j$(nproc) distcheck - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: linux-x86-config.log path: distcheck-*/gen/config.log linux-arm: name: Linux (Arm64) runs-on: ubuntu-24.04-arm if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install dependencies run: | sudo apt-get update -y sudo apt-get install -y \ mandoc \ acl \ libacl1-dev \ attr \ libcap2-bin \ libcap-dev \ libonig-dev \ liburing-dev - name: Run tests run: | .github/diag.sh make -j$(nproc) distcheck - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: linux-arm-config.log path: distcheck-*/gen/config.log macos: name: macOS runs-on: macos-26 if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install dependencies run: | brew install bash - name: Run tests run: | jobs=$(sysctl -n hw.ncpu) .github/diag.sh make -j$jobs distcheck freebsd: name: FreeBSD runs-on: ubuntu-24.04 if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Start VM uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0 with: operating_system: freebsd version: "15.1" - name: Install dependencies shell: cpa.sh {0} run: | sudo pkg install -y \ bash \ oniguruma \ pkgconf sudo mount -t fdescfs none /dev/fd - name: Run tests shell: cpa.sh {0} run: | .github/diag.sh make -j$(nproc) distcheck - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: freebsd-config.log path: distcheck-*/gen/config.log openbsd: name: OpenBSD runs-on: ubuntu-24.04 if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Start VM uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0 with: operating_system: openbsd version: "7.9" - name: Install dependencies shell: cpa.sh {0} run: | sudo pkg_add \ bash \ gmake \ oniguruma - name: Run tests shell: cpa.sh {0} run: | jobs=$(sysctl -n hw.ncpu) ./configure MAKE=gmake .github/diag.sh gmake -j$jobs check TEST_FLAGS="--sudo --verbose=skipped" - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: openbsd-config.log path: gen/config.log netbsd: name: NetBSD runs-on: ubuntu-24.04 if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Start VM uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0 with: operating_system: netbsd version: "11.0" - name: Install dependencies shell: cpa.sh {0} run: | sudo pkgin -y install \ bash \ oniguruma \ pkgconf - name: Run tests shell: cpa.sh {0} run: | PATH="/sbin:/usr/sbin:$PATH" jobs=$(sysctl -n hw.ncpu) ./configure .github/diag.sh make -j$jobs check TEST_FLAGS="--sudo --verbose=skipped" - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: netbsd-config.log path: gen/config.log dragonflybsd: name: DragonFly BSD runs-on: ubuntu-24.04 if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Start VM uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0 with: operating_system: dragonflybsd version: "6.4.2" - name: Install dependencies shell: cpa.sh {0} run: | sudo pkg install -y \ bash \ llvm18 \ oniguruma \ pkgconf \ sudo - name: Run tests shell: cpa.sh {0} run: | jobs=$(sysctl -n hw.ncpu) ./configure CC=clang18 .github/diag.sh make -j$jobs check TEST_FLAGS="--sudo --verbose=skipped" - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: dragonfly-config.log path: gen/config.log omnios: name: OmniOS runs-on: ubuntu-24.04 if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Start VM uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0 with: operating_system: omnios version: "r151058" - name: Install dependencies shell: cpa.sh {0} run: | sudo pkg install \ bash \ build-essential \ gnu-make \ onig - name: Run tests shell: cpa.sh {0} run: | PATH="/usr/xpg4/bin:$PATH" jobs=$(getconf NPROCESSORS_ONLN) ./configure MAKE=gmake .github/diag.sh gmake -j$jobs check TEST_FLAGS="--sudo --verbose=skipped" - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: omnios-config.log path: gen/config.log