Skip to content

Releases: gerardrecinto/xctriage

Release list

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 21:53

Fixes a real bug in the Slack reporter and closes a couple of security/CI gaps found during a hardening pass. No breaking changes.

Fixed

  • --output slack could silently drop the webhook post. It fired on an unstructured Task and returned immediately, so with --exit-code set the process would call exit(1) before the task ever got scheduled. analyze now awaits the Slack post before returning.
  • ClaudeClassifier swallowed JSON encoding failures and sent an empty request body instead of raising an error, which showed up as a confusing 400 from the Claude API. It now throws a clear parseError if the request can't be encoded.
  • The CLI's --version flag was still printing 0.1.0, left over from before the v1.0.0 tag. Now prints 1.1.0.

Added

  • SwiftLint in CI (.swiftlint.yml tuned to the existing code style, force_unwrapping opted in since this tool parses untrusted xcodebuild/xcresult output and Claude API responses).
  • CodeQL analysis workflow for Swift.
  • dependency-review-action gated on pull requests.
  • First test coverage for ClaudeClassifier: well-formed responses, markdown-fenced JSON, non-200 status codes, and malformed response bodies, using a stubbed URLProtocol instead of hitting the real API.

Docs

  • Removed a README link to docs/architecture.drawio, which was never actually checked into the repo.

17 tests before this release, 22 after. swift build -c release and swift test both pass clean.

v1.0.0

Choose a tag to compare

@gerardrecinto gerardrecinto released this 11 Jun 09:26

Swift 6 command-line tool for AI-powered CI failure analysis on Apple platforms. Parses xcodebuild console output and xcresult bundles. Rule-based classifier with Claude fallback via URLSession. Actor-based SQLite flaky test tracker with 90-day recurrence scoring. Native Swift 6 concurrency throughout: actor, async/await, Sendable, typed throws.

Added

  • --exit-code flag: returns exit code 1 when a failure is detected, enabling CI gate mode in Jenkinsfiles and GitHub Actions
  • macOS binary published as a release asset — download and run without a Swift toolchain

Install

# Download binary (no Xcode required)
curl -L https://github.com/gerardrecinto/xctriage/releases/latest/download/xctriage -o xctriage
chmod +x xctriage
mv xctriage /usr/local/bin/xctriage

# Or build from source
git clone https://github.com/gerardrecinto/xctriage.git
cd xctriage
swift build -c release
cp .build/release/xctriage /usr/local/bin/

Usage

xctriage analyze xcbuild.log --source xcodebuild
xctriage analyze build.xcresult
xcodebuild test -scheme MyApp 2>&1 | xctriage analyze - --source xcodebuild
xctriage analyze xcbuild.log --source xcodebuild --exit-code   # exits 1 on failure
xctriage flaky --n 20

export XCTRIAGE_ANTHROPIC_API_KEY=sk-ant-...
xctriage analyze xcbuild.log --source xcodebuild --llm

Failure categories

compilation_error, test_failure, flaky_test, resource_exhaustion, infra_failure, dependency_failure, timeout — 17 NSRegularExpression patterns across 7 Apple-specific categories