Open kikones34 opened 3 weeks ago
@kikones34 This is by design at the moment. The "run dependents" logic only applies to direct dependents of affected tasks, and not the entire tree. It was built this way as a simple regression testing mechanism and ensuring a change in a project didn't affect it's immediate consumers.
However, we can probably add an option to control the depth.
@milesj Oh, I see. The problem is that this breaks the way we're managing inter-project dependencies. In the real-world use case, what we actually have is:
check-source-changed
task on each project which gets dirty when the source code of the project changes.check-deps-source-changed
task on each project, which has dependencies such as proj1:check-source-changed
, proj2:check-source-changed
, etc. It gets dirty whenever one of those project's source is changed.check-deps-source-changed
. For example, test
only gets dirty if the project source or the source of the dependencies has changed.This has worked perfectly as far as caching goes, but I'm finding it impossible to replicate with the CI feature.
@kikones34 Yah that makes sense. Are you able to use moon run
in CI now to replicate what you want?
Yeah for now we're using moon run
, but managing the cache is tricky due to the pipelines being run by Bamboo agents, different PRs open on different branches at the same time, etc.
For now it's mostly working, although we are limiting the cache to be per-branch, otherwise many issues arise. That's why we were looking into leveraging the moon ci
capabilities so that we can always run just the minimum necessary tasks given by the touched files, without having to worry so much about the cache state.
I'll look into supporting deep dependents in the next release.
Describe the bug
If you have a dependency chain task1 -> task2 -> task3, when task1 is touched,
moon ci
will only execute task2 and it will not propagate to task3.Steps to reproduce
Configure three tasks as follows:
Commit everything to the default git branch.
moon ci
shouldn't execute anything. Now, modify the filedependency-input.txt
and executemoon ci
. Thedependency-checker
task is run, but thedependent
is not:Expected behavior
The task
dependent
should also be executed since it depends ondependency-checker
.Additional context
Note that these dependency chains behave correctly regarding the cache logic (so if
dependency
is dirty, it will propagate the dirty state up todependent
). The issue only occurs inmoon ci
.