GitHub Actions
The CI/CD workflow can be triggered in multiple ways:
1. Tag Push (Release)
Push a tag to trigger a full release build with GitHub Release artifacts:
# add and commit local changes
git add .
git commit -m "commit msg"
# push local changes to remote
git push
# add local tag
git tag -a v0.1.0 -m "v0.1.0"
# push local tag to remote
git push origin --tags
To delete and recreate tags:
# delete local tag
git tag --delete v0.1.0
# delete remote tag
git push origin --delete v0.1.0
2. Manual Trigger (GitHub UI)
Trigger a build manually from the GitHub Actions web interface (build-only, no releases):
- Go to the Actions tab
- Select the readstat-rs workflow
- Click Run workflow
- Optionally specify:
- Version string: Label for artifacts (default:
dev)
- Version string: Label for artifacts (default:
๐ Manual triggers only build artifacts and do not create GitHub releases. To create a release, use a tag push.
3. API Trigger (External Tools)
Trigger builds programmatically using the GitHub API. This is useful for automation tools like Claude Code.
Using gh CLI
# Trigger a build
gh api repos/curtisalexander/readstat-rs/dispatches \
-f event_type=build
# Trigger a build with custom version label
gh api repos/curtisalexander/readstat-rs/dispatches \
-f event_type=build \
-F client_payload='{"version":"test-build-123"}'
Using curl
curl -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/curtisalexander/readstat-rs/dispatches \
-d '{"event_type": "build", "client_payload": {"version": "dev"}}'
4. Claude Code Integration
To have Claude Code trigger a CI build, use this prompt:
Trigger a CI build for readstat-rs by running:
gh api repos/curtisalexander/readstat-rs/dispatches -f event_type=build
Event Types
Repository dispatch event types for API triggers:
| Event Type | Description |
|---|---|
build | Build all targets and upload artifacts |
test | Same as build (alias for clarity) |
release | Same as build (reserved for future use) |
๐ API triggers only build artifacts and do not create GitHub releases. To create a release, use a tag push.
Fuzz Testing (.github/workflows/fuzz.yml)
A separate workflow runs cargo-fuzz (libFuzzer) targets against the readstat libraryโs byte-parsing paths.
- Schedule: Weekly, Monday 3am UTC
- Manual trigger:
gh workflow run fuzz.ymlor via the Actions UI - Duration: 30 minutes per target (~90 min total)
- Targets:
fuzz_read_metadata,fuzz_read_data,fuzz_read_data_filtered - On crash: uploads crash artifacts and automatically opens a GitHub issue labeled
bug+fuzz
See TESTING.md for local usage and target details.
Artifacts
All builds (regardless of trigger method) upload artifacts that can be downloaded from the workflow run page. Artifacts are retained for the default GitHub Actions retention period.