Repository navigation
Threads monitor background shells: a turn that ends with a shell, monitor or workflow still running shows Monitoring, not Complete #29
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| laws: | |
| name: Check and prove | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/setup-bend | |
| - run: scripts/check.sh | |
| test: | |
| name: Tests | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/setup-bend | |
| - uses: oven-sh/setup-bun@v2 | |
| - run: scripts/test.sh | |
| build: | |
| name: Build ${{ matrix.target }} | |
| needs: [laws] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - { target: linux-x64, os: ubuntu-24.04 } | |
| - { target: linux-arm64, os: ubuntu-24.04-arm } | |
| # macOS is on hold; scripts/build.sh builds it as hub + web server | |
| # - { target: darwin-arm64, os: macos-15 } | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/setup-bend | |
| - uses: oven-sh/setup-bun@v2 | |
| - name: Swap for the compile | |
| # clang takes about 20 GB to compile the app's C (one large file); | |
| # the Linux runners have 16, so without swap the compile can be killed | |
| if: runner.os == 'Linux' | |
| # the swap file goes on /mnt when the runner has it, and never takes | |
| # more than the free space less 8 GB (a full disk kills the runner) | |
| run: | | |
| dir=/; [ -d /mnt ] && dir=/mnt | |
| df -h / /mnt || true | |
| free_gb=$(df -BG --output=avail "$dir" | tail -1 | tr -dc 0-9) | |
| size=$(( free_gb - 8 )); [ "$size" -gt 16 ] && size=16 | |
| if [ "$size" -ge 2 ]; then | |
| sudo fallocate -l "${size}G" "$dir/swap-build" | |
| sudo chmod 600 "$dir/swap-build" | |
| sudo mkswap "$dir/swap-build" | |
| sudo swapon "$dir/swap-build" | |
| else | |
| echo "only ${free_gb} GB free on $dir: no swap" | |
| fi | |
| free -h | |
| - name: Install clang 19 | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y clang-19 libx11-dev | |
| sudo ln -sf /usr/bin/clang-19 /usr/local/bin/clang | |
| - run: clang --version | |
| - run: scripts/build.sh | |
| - run: scripts/smoke.sh | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: backplane-${{ matrix.target }} | |
| path: dist/ | |
| retention-days: 7 |