name: Bob the Builder # Run on all branches, including all pull requests, except the 'dev' # branch since that's where we run Coverity Scan (limited tokens/day) on: push: branches: - '**' - '!dev' pull_request: branches: - '**' jobs: build: # Verify we can build on latest Ubuntu with both gcc and clang name: ${{ matrix.compiler }} runs-on: ubuntu-latest strategy: matrix: compiler: [gcc, clang] fail-fast: false env: CC: ${{ matrix.compiler }} steps: - name: Install dependencies run: | sudo apt-get -y update sudo apt-get -y install pkg-config tree jq libuev-dev libite-dev - uses: actions/checkout@v4 - name: Static Finit run: | ./autogen.sh ./configure --prefix= --enable-static make -j3 V=1 - name: Regular Finit run: | ./configure --prefix=/usr --exec-prefix= --sysconfdir=/etc --localstatedir=/var \ --enable-x11-common-plugin --enable-testserv-plugin --with-watchdog \ --with-keventd \ CFLAGS="-fsanitize=address -ggdb" make -j3 clean make -j3 V=1 - name: Install to /tmp run: | DESTDIR=/tmp make install-strip tree /tmp || true - name: Check dependencies run: | ldd /tmp/sbin/finit size /tmp/sbin/finit ldd /tmp/sbin/initctl size /tmp/sbin/initctl ldd /tmp/sbin/reboot size /tmp/sbin/reboot - name: Verify starting and showing usage text run: | sudo /tmp/sbin/finit -h sudo /tmp/sbin/initctl -h - name: Enable unprivileged userns (unshare) run: | sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0 - name: Run Unit Tests run: | make check || (cat test/test-suite.log; false) - name: Upload Test Results uses: actions/upload-artifact@v4 with: name: finit-test-${{ matrix.compiler }} path: test/*.log