name: Shell CI — agent-queue + CLI on: push: branches: [main] paths: - 'agent-queue/**' - 'bytelyst-cli.sh' - '.gitea/workflows/shell-ci.yml' pull_request: branches: [main] paths: - 'agent-queue/**' - 'bytelyst-cli.sh' - '.gitea/workflows/shell-ci.yml' concurrency: group: shell-ci-${{ github.ref }} cancel-in-progress: true jobs: lint: name: shellcheck + syntax runs-on: [ubuntu-latest, bytelyst, hostinger] container: image: node:20-bookworm timeout-minutes: 10 steps: - name: Checkout uses: actions/checkout@v4 with: github-server-url: https://gitea.bytelyst.com - name: Install shellcheck run: | apt-get update -qq apt-get install -y -qq shellcheck shellcheck --version - name: shellcheck agent-queue (errors fail the build) run: | shellcheck --severity=error --shell=bash agent-queue/agent-queue.sh - name: shellcheck bytelyst-cli (non-gating — legacy known issues) continue-on-error: true run: | shellcheck --severity=error --shell=bash bytelyst-cli.sh - name: bash syntax check (gating, both scripts) run: | bash -n agent-queue/agent-queue.sh bash -n bytelyst-cli.sh - name: node syntax check (dashboard) run: node --check agent-queue/dashboard.mjs - name: smoke test (init + add + drain, no real agent) run: | set -euo pipefail export AGENT_QUEUE_ROOT="$PWD/.ci-queue" ./agent-queue/agent-queue.sh init # task with an invalid cwd lands in failed/ without launching any agent printf '%s\n' '---' 'engine: devin' 'cwd: /no/such/dir' 'yolo: true' '---' '# ci' \ > /tmp/ci-task.md ./agent-queue/agent-queue.sh add /tmp/ci-task.md ./agent-queue/agent-queue.sh run --once test -f "$AGENT_QUEUE_ROOT"/failed/*.md echo "smoke OK: task routed to failed/ as expected" rm -rf "$AGENT_QUEUE_ROOT"