Hey there,
I'm trying to evaluate if Dagger could be the CI tool for us for the next >5 years. For that, I'm trying to plan out what I would need to build to accommodate our devs.
The journey so far has spawned more and more questions, and I would be happy if I could get them answered before I start building.
Generally, for all my questions, the crux is about "is it possible?". The effort required doesn't matter.
- From within a module, is it possible to extend the context that is pulled in from the host?
- I don't want to build a custom application, but directories that need to be ignored need to be dynamic
- It is okay if there is one expensive operation
dagger call -m my-ci initper directory that produces some artifact that I check into vcs, would be nice if it could be avoided though - The directories to ignore contain dozens of GBs that I don't want to pull in
- Are there benchmarks on eval time for huge DAGs?
- I plan to dynamically build DAGs that will create hundreds of thousands of nodes
- A vast majority will end up receiving inputs that will get invalidated yearly, some even never
- Devs want subsecond evaluation to iterate quickly
- How could remote caches be made possible?
- CI needs ephemeral nodes and needs to make use of the aggressive caching
- Is there some flag to ignore all existing caches for an invocation?
- Is there some way to ignore a function cache when invoking it from another function?
- Does the GC evict based on last access?
- Can the TTL of 7 days be increased?
- Devs need to be able to download existing artifacts, rebuilding would take them out for half a day
- Devs still need to use their local cache primarily
- CI needs ephemeral nodes and needs to make use of the aggressive caching
- Can one pipeline be distributed across multiple nodes?
- Tests need to connect to qemu. Can we make qemu/kvm available without walking each dev through a custom dagger setup?
- Is the concept of test cases planned? I assume Dagger Cloud will want to display test statistics one day