Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,9 @@ jobs:
- distro: ubuntu
image: ubuntu-24-04-x64
setup_script: bin/ci/setup-ubuntu.sh
# To add Arch (or other distros), add entries here:
# - distro: arch
# image: arch-linux-x64 # or a custom snapshot ID
# setup_script: bin/ci/setup-arch.sh
- distro: arch
image: "217410218"
setup_script: bin/ci/setup-arch.sh

name: ${{ matrix.distro }}
timeout-minutes: 10
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ bin/ security & operations scripts
ci/ CI integration scripts
droplet.sh ephemeral DigitalOcean droplet lifecycle (create/destroy/ssh)
setup-ubuntu.sh Ubuntu droplet: prereqs + setup + tests
setup-arch.sh Arch Linux droplet: prereqs + setup + tests
hooks/
pre-commit blocks agent from modifying security files in git
pi/
Expand Down
36 changes: 36 additions & 0 deletions bin/ci/setup-arch.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/bin/bash
# CI setup script for Arch Linux droplets.
# Runs as root on a fresh droplet. Installs prereqs, uploads source,
# runs setup.sh, and executes the test suite.
#
# Expects: /tmp/hornet-src.tar.gz already uploaded via scp.

set -euo pipefail

echo "=== [Arch] Installing prerequisites ==="
pacman -Syu --noconfirm --needed git curl tmux iptables docker sudo 2>&1 | tail -10

echo "=== Preparing source ==="
useradd -m -s /bin/bash hornet_admin
mkdir -p /home/hornet_admin/hornet
cd /home/hornet_admin/hornet
tar xzf /tmp/hornet-src.tar.gz
chown -R hornet_admin:hornet_admin /home/hornet_admin/
sudo -u hornet_admin bash -c 'cd ~/hornet && git init -q && git config user.email "ci@test" && git config user.name "CI" && git add -A && git commit -q -m "init"'

echo "=== Running setup.sh ==="
cd /
bash /home/hornet_admin/hornet/setup.sh hornet_admin

echo "=== Installing test dependencies ==="
export PATH="/home/hornet_agent/opt/node-v22.14.0-linux-x64/bin:$PATH"
cd /home/hornet_admin/hornet
npm install --ignore-scripts 2>&1 | tail -1
cd slack-bridge && npm install 2>&1 | tail -1
cd ..

echo "=== Running tests ==="
bash bin/test.sh

echo ""
echo "✅ All checks passed on Arch Linux"