Skip to content
Merged
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
48 changes: 48 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,31 @@ jobs:
build:
runs-on: ubuntu-latest

# pg + redis sidecars so the e2e suite's pg/redis tests run (they skip cleanly if absent).
services:
postgres:
image: postgres:18
env:
POSTGRES_USER: bench
POSTGRES_DB: bench
POSTGRES_HOST_AUTH_METHOD: trust
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis:7-alpine
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5

steps:
- name: Checkout code
uses: actions/checkout@v4
Expand All @@ -31,6 +56,29 @@ jobs:
- name: Build
run: dotnet build ioxide.slnx --configuration Release --no-restore

# kTLS module for the TLS e2e test; io_uring enable in case a runner disables it (both best-effort).
- name: Prepare runtime (kTLS + io_uring)
run: |
sudo modprobe tls 2>/dev/null || true
sudo sysctl -w kernel.io_uring_disabled=0 2>/dev/null || true

# E2E suite (already compiled as part of ioxide.slnx). Drives real reactors over real sockets;
# pg/redis tests use the sidecars above. Non-zero exit fails the job before any pack/publish.
- name: Run E2E tests
env:
EXAMPLES_PG_HOST: 127.0.0.1
EXAMPLES_PG_PORT: 5432
EXAMPLES_PG_USER: bench
EXAMPLES_PG_DB: bench
EXAMPLES_REDIS_HOST: 127.0.0.1
EXAMPLES_REDIS_PORT: 6379
run: |
# ioxide rings (RingEntries=8192) pin memory; the e2e starts many reactors, so the
# default 8 MB RLIMIT_MEMLOCK is exhausted. Raise it before the run.
sudo prlimit --pid $$ --memlock=-1:-1 2>/dev/null || ulimit -l unlimited 2>/dev/null || true
echo "memlock for e2e: $(ulimit -Sl) KB"
dotnet run --project Tests/ioxide.e2e.csproj --configuration Release --no-build

- name: Pack ioxide
run: dotnet pack ioxide/ioxide.csproj --configuration Release --no-build --output ./artifacts

Expand Down
Loading