Skip to content

v0.6.1

v0.6.1 #4

name: Post-Release Smoke
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: "Version to smoke-test (without leading v), e.g. 0.5.10"
required: true
type: string
permissions: {}
concurrency:
group: post-release-smoke-${{ github.event.release.id || inputs.version }}
cancel-in-progress: true
jobs:
resolve-version:
name: Resolve target version
runs-on: ubuntu-latest
timeout-minutes: 5
outputs:
version: ${{ steps.pick.outputs.version }}
steps:
- name: Pick version from event or input
id: pick
shell: bash
env:
EVENT_NAME: ${{ github.event_name }}
DISPATCH_VERSION: ${{ inputs.version }}
RELEASE_TAG: ${{ github.event.release.tag_name }}
run: |
if [ "$EVENT_NAME" = "workflow_dispatch" ]; then
VERSION="$DISPATCH_VERSION"
else
VERSION="${RELEASE_TAG#v}"
fi
if [ -z "$VERSION" ]; then
echo "::error::Could not resolve version"
exit 1
fi
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "Resolved version: $VERSION"
npm-smoke:
name: npm install (${{ matrix.os }})
needs: resolve-version
runs-on: ${{ matrix.os }}
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 22
registry-url: https://registry.npmjs.org
- name: Wait for npm registry propagation
shell: bash
env:
VERSION: ${{ needs.resolve-version.outputs.version }}
run: |
for i in $(seq 1 30); do
if npm view "@fitlab-ai/agent-infra@${VERSION}" version >/dev/null 2>&1; then
echo "Package @fitlab-ai/agent-infra@${VERSION} available on npm"
exit 0
fi
echo "Waiting for npm registry... (attempt $i/30)"
sleep 10
done
echo "::error::Package @fitlab-ai/agent-infra@${VERSION} not found on npm after 5 minutes"
exit 1
- name: Smoke test - agent-infra version
shell: bash
env:
VERSION: ${{ needs.resolve-version.outputs.version }}
run: |
OUTPUT=$(npx -y "@fitlab-ai/agent-infra@${VERSION}" version)
echo "$OUTPUT"
echo "$OUTPUT" | grep -F "${VERSION}"
- name: Smoke test - sandbox --help
shell: bash
env:
VERSION: ${{ needs.resolve-version.outputs.version }}
run: |
npx -y "@fitlab-ai/agent-infra@${VERSION}" sandbox --help
brew-smoke:
name: brew install (macos-latest)
needs: resolve-version
runs-on: macos-latest
timeout-minutes: 20
steps:
- name: Wait for Homebrew tap formula update
shell: bash
env:
VERSION: ${{ needs.resolve-version.outputs.version }}
run: |
FORMULA_URL="https://raw.githubusercontent.com/fitlab-ai/homebrew-tap/main/Formula/agent-infra.rb"
for i in $(seq 1 60); do
BODY=$(curl -fsSL "$FORMULA_URL" 2>/dev/null || true)
if printf '%s' "$BODY" | grep -qF "agent-infra-${VERSION}.tgz"; then
echo "Formula updated to ${VERSION}"
exit 0
fi
echo "Waiting for tap formula update... (attempt $i/60)"
sleep 10
done
echo "::error::Tap formula not updated to ${VERSION} after 10 minutes"
exit 1
- name: brew install
shell: bash
run: brew install fitlab-ai/tap/agent-infra
- name: Smoke test - agent-infra version
shell: bash
env:
VERSION: ${{ needs.resolve-version.outputs.version }}
run: |
OUTPUT=$(agent-infra version)
echo "$OUTPUT"
echo "$OUTPUT" | grep -F "${VERSION}"