Thanks for the hard work on Dagger it seems really promising as a way to do CD for a series of codes that I maintain. One question I had was about cache invalidation. Is there some documentation about what causes the build cache to be invalidated?
My application is a moderate to small c++ code with a bunch of dependencies (200MB-8GB depending on configuration). Depending on which ones and how many downloading or building these can take between minutes to hours so caching is critical.
I want to test if the code works on several Linux distributions using the system dependencies (I.e. dnf/apt). For these, I don’t have a lock file per se, and If I did I wouldn’t want one — I want the cache to invalidate as soon as apt or dnf says there is a newer version. In docker I would use something like mount-type=cache=locked https://docs.docker.com/engine/reference/builder/#run---mounttypecache
I also need to ensure the software installs via a package manager common in my domain (spack; used in high performance computing). In this case I can generate a “lock file” which tells me if my dependencies that I have built have been invalided, and I need to rebuild some subset of them.
How can I handle these separate use cases? I use the python sdk because Python is the language that my colleagues are most likely to know, but I’m open to using something else if needed.