name: ci on: push: pull_request: jobs: linux: runs-on: ubuntu-latest strategy: fail-fast: false matrix: cc: [gcc, clang] steps: - uses: actions/checkout@v4 - name: Install dependencies run: | SUDO=$(command -v sudo || true) $SUDO apt-get update $SUDO apt-get install -y --no-install-recommends \ build-essential clang cmake pkg-config python3 \ libcurl4-openssl-dev libncurses-dev - name: Build (warnings are errors) run: make CC=${{ matrix.cc }} CFLAGS="-std=c11 -Wall -Wextra -O2 -g -Werror" -j"$(nproc)" - name: Unit tests run: make CC=${{ matrix.cc }} check - name: CMake build + ctest run: | cmake -B build -DCMAKE_C_COMPILER=${{ matrix.cc }} -DCST_BUILD_TUI=ON cmake --build build -j"$(nproc)" ctest --test-dir build --output-on-failure - name: Smoke test run: | ./cst-agent --help ./cst-agent --workspace "$PWD" --list-sessions ./cst-agent --demo-ctl --workspace . sanitizers: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install dependencies run: | SUDO=$(command -v sudo || true) $SUDO apt-get update $SUDO apt-get install -y --no-install-recommends \ build-essential pkg-config libcurl4-openssl-dev libncurses-dev - name: ASan + UBSan run: make asan musl: runs-on: ubuntu-latest container: alpine:3.20 steps: - name: Install dependencies run: apk add --no-cache build-base pkgconf curl-dev ncurses-dev git nodejs bash python3 - uses: actions/checkout@v4 - name: Build + unit tests run: | make CFLAGS="-std=c11 -Wall -Wextra -O2 -Werror" -j"$(nproc)" make check # Gitea instances rarely have macOS runners; set the repository variable # HAVE_MACOS_RUNNER=true once one is registered. macos: if: ${{ vars.HAVE_MACOS_RUNNER == 'true' }} runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Install dependencies run: brew install ncurses curl pkg-config - name: Build + unit tests run: | make -j"$(sysctl -n hw.ncpu)" make check