name: Test Install
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: 'Version to test (leave empty for latest)'
required: false
type: string
jobs:
test-go:
name: go install (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
- name: Install via go install
run: go install github.com/standardbeagle/agnt/cmd/agnt@${{ inputs.version && format('v{0}', inputs.version) || 'latest' }}
- name: Verify version
shell: bash
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
VERSION_OUTPUT=$(agnt --version)
echo "Version output: $VERSION_OUTPUT"
if [ -n "$EXPECTED_VERSION" ]; then
if echo "$VERSION_OUTPUT" | grep -q "$EXPECTED_VERSION"; then
echo "✓ Version matches expected: $EXPECTED_VERSION"
else
echo "✗ Version mismatch! Expected: $EXPECTED_VERSION, Got: $VERSION_OUTPUT"
exit 1
fi
fi
- name: Test serve --help
run: agnt serve --help
test-npm:
name: npm (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install via npm
run: npm install -g @standardbeagle/agnt${{ inputs.version && format('@{0}', inputs.version) || '' }}
- name: Debug npm paths
shell: bash
run: |
echo "npm prefix: $(npm prefix -g)"
echo "PATH: $PATH"
ls -la "$(npm prefix -g)/bin" || true
ls -la "$(npm prefix -g)/lib/node_modules/@standardbeagle/agnt/bin" || true
- name: Verify version
shell: bash
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
# Try direct path first, then fall back to PATH
NPM_BIN="$(npm prefix -g)/bin"
if [ -x "$NPM_BIN/agnt" ]; then
VERSION_OUTPUT=$("$NPM_BIN/agnt" --version)
else
VERSION_OUTPUT=$(agnt --version)
fi
echo "Version output: $VERSION_OUTPUT"
if [ -n "$EXPECTED_VERSION" ]; then
if echo "$VERSION_OUTPUT" | grep -q "$EXPECTED_VERSION"; then
echo "✓ Version matches expected: $EXPECTED_VERSION"
else
echo "✗ Version mismatch! Expected: $EXPECTED_VERSION, Got: $VERSION_OUTPUT"
exit 1
fi
fi
- name: Test serve --help
shell: bash
run: |
NPM_BIN="$(npm prefix -g)/bin"
if [ -x "$NPM_BIN/agnt" ]; then
"$NPM_BIN/agnt" serve --help
else
agnt serve --help
fi
test-pip:
name: pip (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install via pip
run: pip install agnt${{ inputs.version && format('=={0}', inputs.version) || '' }}
- name: Verify version
shell: bash
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
VERSION_OUTPUT=$(agnt --version)
echo "Version output: $VERSION_OUTPUT"
if [ -n "$EXPECTED_VERSION" ]; then
if echo "$VERSION_OUTPUT" | grep -q "$EXPECTED_VERSION"; then
echo "✓ Version matches expected: $EXPECTED_VERSION"
else
echo "✗ Version mismatch! Expected: $EXPECTED_VERSION, Got: $VERSION_OUTPUT"
exit 1
fi
fi
- name: Test daemon status (Unix)
if: runner.os != 'Windows'
run: agnt daemon status || echo "Daemon not running (expected)"
- name: Test daemon status (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
agnt daemon status
Write-Host "Daemon not running (expected)"
exit 0
- name: Test serve --help
run: agnt serve --help
test-uv:
name: uv (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Setup uv
uses: astral-sh/setup-uv@v4
- name: Install via uv tool
run: uv tool install agnt${{ inputs.version && format('=={0}', inputs.version) || '' }}
- name: Verify version
shell: bash
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
VERSION_OUTPUT=$(agnt --version)
echo "Version output: $VERSION_OUTPUT"
if [ -n "$EXPECTED_VERSION" ]; then
if echo "$VERSION_OUTPUT" | grep -q "$EXPECTED_VERSION"; then
echo "✓ Version matches expected: $EXPECTED_VERSION"
else
echo "✗ Version mismatch! Expected: $EXPECTED_VERSION, Got: $VERSION_OUTPUT"
exit 1
fi
fi
- name: Test daemon status (Unix)
if: runner.os != 'Windows'
run: agnt daemon status || echo "Daemon not running (expected)"
- name: Test daemon status (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
agnt daemon status
Write-Host "Daemon not running (expected)"
exit 0
- name: Test serve --help
run: agnt serve --help
test-npx:
name: npx (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Test via npx (Unix)
if: runner.os != 'Windows'
shell: bash
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
VERSION_OUTPUT=$(npx --yes @standardbeagle/agnt${{ inputs.version && format('@{0}', inputs.version) || '' }} --version)
echo "Version output: $VERSION_OUTPUT"
if [ -n "$EXPECTED_VERSION" ]; then
if echo "$VERSION_OUTPUT" | grep -q "$EXPECTED_VERSION"; then
echo "✓ Version matches expected: $EXPECTED_VERSION"
else
echo "✗ Version mismatch! Expected: $EXPECTED_VERSION, Got: $VERSION_OUTPUT"
exit 1
fi
fi
- name: Test via npx (Windows)
if: runner.os == 'Windows'
shell: pwsh
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
$VERSION_OUTPUT = npx --yes @standardbeagle/agnt${{ inputs.version && format('@{0}', inputs.version) || '' }} --version
Write-Host "Version output: $VERSION_OUTPUT"
if ($env:EXPECTED_VERSION) {
if ($VERSION_OUTPUT -match $env:EXPECTED_VERSION) {
Write-Host "✓ Version matches expected: $env:EXPECTED_VERSION"
} else {
Write-Host "✗ Version mismatch! Expected: $env:EXPECTED_VERSION, Got: $VERSION_OUTPUT"
exit 1
}
}
test-uvx:
name: uvx (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Setup uv
uses: astral-sh/setup-uv@v4
- name: Test via uvx
shell: bash
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
VERSION_OUTPUT=$(uvx agnt${{ inputs.version && format('=={0}', inputs.version) || '' }} --version)
echo "Version output: $VERSION_OUTPUT"
if [ -n "$EXPECTED_VERSION" ]; then
if echo "$VERSION_OUTPUT" | grep -q "$EXPECTED_VERSION"; then
echo "✓ Version matches expected: $EXPECTED_VERSION"
else
echo "✗ Version mismatch! Expected: $EXPECTED_VERSION, Got: $VERSION_OUTPUT"
exit 1
fi
fi
test-curl-install:
name: curl install (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Install via curl
run: |
curl -fsSL https://raw.githubusercontent.com/standardbeagle/agnt/main/install.sh | bash
- name: Verify version
shell: bash
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
VERSION_OUTPUT=$(~/.local/bin/agnt --version)
echo "Version output: $VERSION_OUTPUT"
if [ -n "$EXPECTED_VERSION" ]; then
if echo "$VERSION_OUTPUT" | grep -q "$EXPECTED_VERSION"; then
echo "✓ Version matches expected: $EXPECTED_VERSION"
else
echo "✗ Version mismatch! Expected: $EXPECTED_VERSION, Got: $VERSION_OUTPUT"
exit 1
fi
fi
test-powershell-install:
name: PowerShell install
runs-on: windows-latest
steps:
- name: Install via PowerShell
shell: pwsh
run: |
irm https://raw.githubusercontent.com/standardbeagle/agnt/main/install.ps1 | iex
- name: Verify version
shell: pwsh
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
$env:PATH = "$env:LOCALAPPDATA\agnt;$env:PATH"
$VERSION_OUTPUT = agnt --version
Write-Host "Version output: $VERSION_OUTPUT"
if ($env:EXPECTED_VERSION) {
if ($VERSION_OUTPUT -match $env:EXPECTED_VERSION) {
Write-Host "✓ Version matches expected: $env:EXPECTED_VERSION"
} else {
Write-Host "✗ Version mismatch! Expected: $env:EXPECTED_VERSION, Got: $VERSION_OUTPUT"
exit 1
}
}
test-docker:
name: Docker (${{ matrix.image }})
strategy:
fail-fast: false
matrix:
include:
- image: ubuntu:22.04
install: apt-get update && apt-get install -y npm && npm install -g @standardbeagle/agnt
- image: debian:12
install: apt-get update && apt-get install -y npm && npm install -g @standardbeagle/agnt
- image: python:3.12-slim
install: pip install agnt
runs-on: ubuntu-latest
container: ${{ matrix.image }}
steps:
- name: Install agnt
run: ${{ matrix.install }}
- name: Verify version
shell: bash
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
VERSION_OUTPUT=$(agnt --version)
echo "Version output: $VERSION_OUTPUT"
if [ -n "$EXPECTED_VERSION" ]; then
if echo "$VERSION_OUTPUT" | grep -q "$EXPECTED_VERSION"; then
echo "✓ Version matches expected: $EXPECTED_VERSION"
else
echo "✗ Version mismatch! Expected: $EXPECTED_VERSION, Got: $VERSION_OUTPUT"
exit 1
fi
fi
- name: Test serve --help
run: agnt serve --help