CI: Cache Hackage package index in integration tests#1667
Draft
zlav wants to merge 2 commits intozach/parallel-integration-testsfrom
Draft
CI: Cache Hackage package index in integration tests#1667zlav wants to merge 2 commits intozach/parallel-integration-testsfrom
zlav wants to merge 2 commits intozach/parallel-integration-testsfrom
Conversation
cabal update downloads the full Hackage index (~500 MB) on every run, taking ~3.5 min. Cache ~/.cache/cabal/packages so subsequent runs do an incremental update (seconds). Key rotates with the release tag; restore-key fallback ensures stale caches still provide fast incremental updates. Co-Authored-By: Claude Opus 4.6 <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.
Overview
Cache the Hackage package index (
~/.cache/cabal/packages) in integration test workflows.cabal updatecurrently downloads the full index (~500 MB) from scratch on every run, taking ~3.5 minutes. With the cache, subsequent runs do an incremental update in seconds.Acceptance criteria
cabal updatein integration test jobs completes in seconds instead of ~3.5 minutes when the cache is warm.Testing plan
cabal updatedoes an incremental update (~seconds).Risks
~/.cache/cabal/packages) assumes XDG layout, which is what the Alpine container uses (/github/home/.cache/cabal/packages). If cabal's config changes the index location, the cache would miss.cabal update.Metrics
~3.5 min saved per integration test job (4 jobs total: build + 3 test shards = ~14 min saved per push on warm cache).
Checklist
docs/.docs/README.msand gave consideration to how discoverable or not my documentation is.Changelog.md. If this PR did not mark a release, I added my changes into an## Unreleasedsection at the top..fossa.ymlorfossa-deps.{json.yml}, I updateddocs/references/files/*.schema.jsonAND I have updated example files used byfossa initcommand. You may also need to update these if you have added/removed new dependency type (e.g.pip) or analysis target type (e.g.poetry).docs/references/subcommands/<subcommand>.md.