You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
run: cargo rail run --since "${{ steps.rail.outputs.base-ref }}" --profile ci
52
25
53
26
- name: Run docs pipeline
54
27
if: steps.rail.outputs.docs == 'true'
55
28
run: cargo rail run --since "${{ steps.rail.outputs.base-ref }}" --surface docs
56
29
```
57
30
58
-
Use the stable major tag `@v4`, or pin a commit SHA for maximum reproducibility. Pin `version` for deterministic
59
-
`cargo-rail`installs.
31
+
The default `version` tracks the latest published stable `cargo-rail` release this action is tested against. Set `version` only when you need a different published release.
32
+
33
+
## What It Publishes
34
+
35
+
Minimal mode publishes:
36
+
37
+
- `build`
38
+
- `test`
39
+
- `bench`
40
+
- `docs`
41
+
- `infra`
42
+
- `scope-json`
43
+
- `base-ref`
44
+
- `custom_<name>`for custom surfaces
45
+
46
+
Debug mode adds:
60
47
61
-
The action handles shallow checkouts intentionally: raw commit SHAs are fetched directly when possible, and broader
62
-
history fetch only happens when a branch-based comparison still needs merge-base history.
48
+
- `plan-json`
49
+
50
+
`scope-json`is the execution handoff. `plan-json` is for debugging.
63
51
64
52
## Inputs
65
53
66
54
| Input | Default | Description |
67
55
|---|---|---|
68
-
| `version` | `0.11.0` | `cargo-rail` version to install (use `latest` only if you intentionally want floating upgrades) |
56
+
| `version` | `0.12.0` | Published `cargo-rail` release to install |
69
57
| `checksum` | `required` | `required`, `if-available`, or `off` |
70
58
| `since` | auto | Git ref for planner comparison |
71
-
| `args` | `""` | Extra planner args except `-f`/`--format`, `--json`, and `-o`/`--output` |
| `custom_<name>` | `true`/`false` | Custom surface gates, with punctuation normalized to `_` |
123
-
124
-
### Debug mode (`mode: debug`)
125
-
126
-
Includes all minimal outputs plus the full planner contract.
127
-
128
-
| Output | Type | Description |
129
-
|---|---|---|
130
-
| `plan-json` | JSON | Full deterministic planner contract for debugging and deep inspection |
131
-
132
-
**Note:** Most workflows should use `minimal` mode. `scope-json` is the execution handoff; use it for package selection in scripts and jobs. `plan-json` is forensic/debug output only.
- Why: Subsequent runs on same runner are instant (no download)
157
-
- Cache reuse requires exact version match; when `version: latest`, the action resolves latest first, then compares
158
-
159
-
2. **Release binary** (fast) — downloads from GitHub Releases
160
-
- Why: Pre-built binaries for all supported platforms, verified against `SHA256SUMS`
161
-
- Supports all platforms except macOS Intel (see below)
162
-
163
-
3. **`cargo-binstall`** (fallback) — installs via binstall if available
164
-
- Why: Faster than `cargo install` (downloads binary instead of compiling)
165
-
- Used when platform is unsupported for release binaries
166
-
167
-
4. **`cargo install`** (slowest, last resort) — compiles from source
168
-
- Why: Guaranteed to work on any platform with Rust toolchain
169
-
- Adds ~2-5 minutes to workflow run time
170
-
171
-
### Checksum verification
172
-
173
-
Default is `required`: download `SHA256SUMS` and verify binary integrity.
174
-
175
-
**Why:** Supply chain security. Detects corrupted downloads and tampering.
176
-
177
-
**Options:**
178
-
- `required` (default): fail if checksum missing or mismatched
179
-
- `if-available`: verify if `SHA256SUMS` exists, skip if not (for pre-release testing)
180
-
- `off`: skip verification (not recommended for production)
181
-
182
-
### macOS Intel unsupported
183
-
184
-
macOS Intel (`x86_64-apple-darwin`) binaries are **not** published in releases.
185
-
186
-
**Why:** GitHub Actions deprecated `macos-latest` Intel runners in 2024. All macOS runners are now ARM (`macos-14`, `macos-15`). Publishing Intel binaries wastes release bandwidth for a platform no longer used in CI.
187
-
188
-
**Workaround:** The action falls back to `cargo-binstall` or `cargo install` on Intel Macs (primarily for local testing, not CI).
189
-
190
-
## Proven On Large Repos
191
-
192
-
Action + planner flow validated on production repos with real merge history:
0 commit comments