@@ -122,6 +122,21 @@ lifecycle rule. It cleans up multipart uploads left incomplete if the server
122122exits during composition; verify lifecycle support when using an S3-compatible
123123endpoint.
124124
125+ An AWS S3 lifecycle configuration can scope the rule to the cache prefix:
126+
127+ ``` json
128+ {
129+ "Rules" : [
130+ {
131+ "ID" : " abort-incomplete-cache-uploads" ,
132+ "Status" : " Enabled" ,
133+ "Filter" : { "Prefix" : " gh-actions-cache/" },
134+ "AbortIncompleteMultipartUpload" : { "DaysAfterInitiation" : 1 }
135+ }
136+ ]
137+ }
138+ ```
139+
125140### Cache Behavior
126141
127142| Variable | Default | Description |
@@ -201,6 +216,21 @@ E2E_S3_BUCKET=cache-test \
201216go test ./e2e -run ' TestExternal(Postgres|MySQL|S3MinIO)SaveAndRestore' -count=1
202217```
203218
219+ Targeted data-path benchmarks cover filesystem whole-cache upload/download,
220+ Azure block commit, ordered-parts versus merged downloads, concurrent runners,
221+ and S3 server-side composition:
222+
223+ ``` sh
224+ go test ./internal/cache ./internal/storage -run ' ^$' -bench ' Benchmark(Filesystem|Azure|S3)' -benchmem -count=5
225+ ```
226+
227+ Streaming benchmarks run with 32 KiB, 128 KiB, 256 KiB, and 1 MiB buffers.
228+ The concurrent-runner benchmark also reports p95 latency and peak process RSS;
229+ the deterministic S3 protocol benchmark reports and asserts SDK HTTP requests
230+ per composition. When ` E2E_S3_ENDPOINT_URL ` and ` E2E_S3_BUCKET ` are configured,
231+ the same command also runs composition against that external S3-compatible
232+ backend to measure its wall-clock latency.
233+
204234The repository also contains a Go smoke test for the cache v2 HTTP protocol
205235shape. Full runner-level compatibility should be tested with the patched
206236falcondev runner container and a real GitHub Actions job.
0 commit comments