name: Backend CI permissions: contents: read on: pull_request: paths: - 'tachyon/files/**' - 'tachyon/Makefile' - 'build.sh' - 'tests/**' - 'luci-app-tachyon/**' - 'fe-app-tachyon/locales/**' - '.github/workflows/build.yml' - '.github/workflows/backend-ci.yml' push: branches: - main paths: - 'tachyon/files/**' - 'tachyon/Makefile' - 'build.sh' - 'tests/**' - 'luci-app-tachyon/**' - 'fe-app-tachyon/locales/**' - '.github/workflows/build.yml' - '.github/workflows/backend-ci.yml' jobs: backend-checks: name: Backend Runtime Checks runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - name: Build ucode shell: bash run: | sudo rm -f /etc/apt/sources.list.d/google-chrome.list sudo apt-get update sudo apt-get install -y build-essential cmake git libjson-c-dev pkg-config nodejs curl git clone --depth 1 --branch v0.0.20250529 https://github.com/jow-/ucode.git /tmp/ucode cmake -S /tmp/ucode -B /tmp/ucode/build \ -DUBUS_SUPPORT=OFF \ -DUCI_SUPPORT=OFF \ -DULOOP_SUPPORT=OFF cmake --build /tmp/ucode/build --parallel sudo cmake --install /tmp/ucode/build sudo ldconfig command -v ucode ucode -e 'print("ucode ready\n")' - name: Check ucode syntax shell: bash run: | find tachyon/files/usr/lib -name '*.uc' -print0 | xargs -0 -n1 ucode -c -o /dev/null find tachyon/files/usr/lib -name '*.uc' -print0 | xargs -0 -n1 ucode -S -c -o /dev/null - name: Run backend tests shell: bash run: | find tests -maxdepth 1 -name '*.sh' \ ! -name 'docker_e2e_test.sh' \ ! -name 'container_entrypoint.sh' \ ! -name 'run_all.sh' \ ! -name 'ucode_syntax_lint.sh' \ -print0 | xargs -0 -n1 -P4 bash openwrt-e2e: name: OpenWrt Docker E2E needs: backend-checks runs-on: ubuntu-24.04 timeout-minutes: 60 steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - name: Run OpenWrt E2E suite shell: bash run: bash tests/docker_e2e_test.sh