Add CI workflow with sccache integration test#2
Conversation
- Trigger on pull_request only (not push) - Rename binary references spio → spiceio - Add full lint pipeline: fmt, check, clippy, rustdoc - Add sccache integration test step with UNAS SMB credentials - Hardcode us-west-1 region, spiceio bucket, ai_platform_dev share - Upload release artifact as spiceio
There was a problem hiding this comment.
Pull request overview
Adds a GitHub Actions CI workflow for Rust that runs formatting/linting/docs checks, unit tests, an sccache integration script, and uploads a release binary artifact.
Changes:
- Introduces a PR-triggered CI workflow with
cargo fmt,cargo check,cargo clippy, andcargo docgates. - Runs
cargo testplus an sccache/AWS CLI integration test via./scripts/test-sccache.sh. - Builds
spiceioin release mode and uploads it as a workflow artifact.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Remove workflow_dispatch trigger (PR-only) - Add comment explaining self-hosted runner requirement - Use repository variables with defaults for SMB config - Skip integration test on fork PRs (secret unavailable) - Assert cache hits > 0 and write errors == 0 in test script
Builds an optimized release binary on the self-hosted macOS runner, packages it as a tarball with SHA-256 checksum, and uploads both as release assets.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Composite action that downloads a released spiceio binary, adds it
to PATH, and starts the S3-to-SMB proxy in the background.
Usage from another repo:
- uses: spiceai/spiceio/.github/actions/setup@trunk
with:
smb-server: 192.168.3.148
smb-user: runner
smb-pass: ${{ secrets.UNAS_SMB_PASS }}
smb-share: ai_platform_dev
Outputs the endpoint URL and PID for use in subsequent steps.
- Fix grep|awk pipelines in test script to not fail under set -e - Add --clobber to gh release upload for safe re-runs - Skip CI on fork PRs to protect self-hosted runner from untrusted code
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Make token input required (expression defaults don't evaluate in action metadata) - Use RUNNER_OS/RUNNER_ARCH to match release asset naming convention - Add cleanup step (if: always) to kill backgrounded spiceio process
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Zero sccache stats before warm build so assertion is warm-only - Verify SHA-256 checksum after downloading release asset - Remove uname fallbacks (RUNNER_OS/RUNNER_ARCH always set in Actions) - Fix CI: use env.SPICEIO_SMB_PASS instead of secrets context in if condition
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Fix rustdoc: escape brackets in der_wrap doc comment - Fix integration test skip: check secret via env step, not secrets context - Simplify setup action: accept smb://user:pass@server/share URL instead of separate inputs for each field - smb-pass input overrides URL password (for secrets)
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Install awscli via brew if missing on self-hosted runner - Fix SMB URL parsing for smb://user@server/share (no password in URL) - Check spiceio server header for skip detection, not just any HTTP response
Summary
pull_requestonlycargo fmt --check,cargo check,cargo clippy,rustdoccargo test./scripts/test-sccache.sh(AWS CLI S3 API tests + cold/warm build cache verification)UNAS_SMB_PASSsecret, hardcodedus-west-1region,spiceiobucket,ai_platform_devshare,runneruserTest plan