diff --git a/.gitea/workflows/shell-ci.yml b/.gitea/workflows/shell-ci.yml new file mode 100644 index 0000000..8e48ee5 --- /dev/null +++ b/.gitea/workflows/shell-ci.yml @@ -0,0 +1,66 @@ +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 (errors fail the build) + run: | + shellcheck --severity=error --shell=bash \ + agent-queue/agent-queue.sh \ + bytelyst-cli.sh + + - name: bash syntax check + 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"