Skip to content

Cache builds better #3

@NotNite

Description

@NotNite

Beyond #1 and #2, the biggest issue with CI speed is that we clone the repository and install dependencies every run without caching. This takes up a lot of time, especially bulk updates in one PR. Some proposals:

  • Clone each unique repository once in the runner, and just check out multiple commits when doing multiple builds.
    • There could be some funny business with a previous run being able to mutably write to the repository, or giving it .git access. We'd probably want to copy the repository into a separate temp folder, to be mounted and then deleted.
    • Need to make sure that cloning the repository from the runner doesn't have any security problems.
  • Fetch dependencies ahead of time and cache the pnpm store between runs.
    • Lets us build extensions fully offline, which would be a nice extra layer of security.
    • Could be dangerous if we let build scripts run by accident.
    • Not sure how this'll interact with Allow custom package managers #2 if we start using Corepack.
    • Sharing the cache between all extensions sounds dangerous and wasteful. Maybe we could make a read-only cache of the common dependencies included in the extension template, and any other added dependencies have to be pulled every run.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions