Repository navigation
Fetch the release dependencies once, and give the API job V8 - #59
Merged
Merged
Conversation
The API job has not been able to run since V8 left the repository: it
extracts the bindings with libclang against the V8 headers, and nothing in
that job fetched them. `Build` gets them only because its build runs
FetchV8. The first release since then failed in extract_api.py ("V8 headers
not found"), and gen_dts.py then reported a missing api.json that hid the
cause.
`build` and `api` also start at the same time, so on a cold cache each one
downloaded V8 and compiled every vcpkg package on its own.
A `deps` job now does both once:
- it builds both vcpkg manifests into the binary cache and saves it;
- it fetches V8 with `build.ps1 deps` (the FetchV8 target alone) and saves
it under the key the build already used.
`build` and `api` restore both from that run. `build` no longer saves the
vcpkg cache. Each keeps its own fallback on a miss: the build's FetchV8, and
an explicit `build.ps1 deps` in `api`.
The API job also checks each command's exit code, so a failed extraction
stops the step instead of surfacing as a later missing file.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The v2.2.0 release run failed in the API docs job. Nothing was tagged or published, so the release can simply be re-run once this lands.
Why it failed. Since #35, V8 is no longer in the repository; the build fetches it through the
FetchV8target.extract_api.pycompiles the bindings against the V8 headers, but the API job never builds anything, so nothing fetched them:gen_dts.pythen failed withFileNotFoundError: api.json, which hid the real cause. PR CI never runs the extraction, so this first showed up on a release.Duplicate work.
buildandapistart at the same time. On a cold cache, each downloaded V8 and compiled all 11 vcpkg packages separately.Change
depsjob:x86-windows-static) into the binary cache and saves it;build.ps1 deps(only theFetchV8target, which compiles nothing) and saves it under the existingv8-<os>-<version>key. It skips the fetch when that cache already exists.buildnow needsdeps. It restores both caches from that run and no longer saves the vcpkg cache. If the V8 cache misses, its ownFetchV8still downloads.apinow needsdepsand restores both caches, with abuild.ps1 depsfallback on a miss. Each command in the Generate step now checks its exit code.Trade-off:
buildandapinow wait fordeps. On a warm cache that is a restore plus a quick vcpkg check. On a cold cache it replaces the two jobs downloading and compiling the same things in parallel.Tested: YAML parses, and the job graph is
version,deps→build,api→release→deploy-docs. It has not run on Actions; the next release run is its test.🤖 Generated with Claude Code