Skip to content

infra: Ubuntu support + integration CI on ephemeral droplets#12

Merged
benvinegar merged 4 commits into
mainfrom
support-ubuntu
Feb 17, 2026
Merged

infra: Ubuntu support + integration CI on ephemeral droplets#12
benvinegar merged 4 commits into
mainfrom
support-ubuntu

Conversation

@benvinegar

Copy link
Copy Markdown
Member

Support Ubuntu and add integration CI on ephemeral DigitalOcean droplets.

Changes

Ubuntu compatibility fixes

  • bin/hornet-safe-bash: replace grep -P (Perl regex) with grep -E (POSIX extended)
  • setup.sh: fix CWD inheritance (cd /tmp), use deployed harden-permissions, run git config as admin user
  • bin/harden-permissions.sh: guard sessions dir find for fresh installs
  • AGENTS.md: add distro-agnostic coding guideline

Integration CI

  • bin/ci/droplet.sh: reusable DO droplet lifecycle (create/destroy/wait-ssh/run)
  • bin/ci/setup-ubuntu.sh: Ubuntu prereqs → setup.sh → test suite
  • .github/workflows/integration.yml: matrix workflow (Ubuntu now, extensible to Arch etc)
  • Ephemeral everything: fresh droplet + SSH key per run, destroyed on cleanup
  • Single secret: DO_API_TOKEN (already set)

Tested

  • 3 full local cycles on fresh Ubuntu 24.04 droplets — all 5 test suites pass
  • Integration workflow will trigger on the next PR after merge (GH Actions limitation: new workflow files must exist on base branch first)

All 207 tests pass.

- bin/ci/droplet.sh: reusable droplet lifecycle (create/destroy/wait-ssh/run)
- bin/ci/setup-ubuntu.sh: Ubuntu prereqs + setup.sh + test suite
- .github/workflows/integration.yml: matrix-based workflow (Ubuntu now, extensible to Arch etc)
- Ephemeral everything: fresh droplet + SSH key per run, destroyed on cleanup
- Single secret: DO_API_TOKEN
- Add shellcheck step to ci.yml lint job (-S warning level)
- Fix SC2155 (declare/assign separately) in droplet.sh, redact-logs.test.sh
- Fix SC2164 (cd || exit) in test.sh
- Fix SC2044 (find loop) in setup.sh
- Suppress SC2088 (tilde in log strings) in security-audit.sh
- Suppress SC1090 (dynamic source) in start.sh
- Fix set -e + short-circuit pattern in droplet.sh (require_token, ip check)
@benvinegar benvinegar merged commit 38d1703 into main Feb 17, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant