I find this feedback very encouraging. It definitely does seem to be a good candidate for JEP proposal. I will plan for that in the mid-term future.
Your suggestions about alternatives are all right on. In one large environment, I created a solution with a metajob that received webhooks from all jobs, used the Jenkins REST API's to query "all job configurations" and then correlate the hooks to metadata, and use build() to trigger the appropriate jobs. This effectively represented an alternative downstream mapping mechanism. It worked for it's purpose and is still in production today. In the end, we looked back and squinted at it, and could see that with a few very deep, yet reasonable (likely non-breaking) changes to the upstream/downstream system , Jenkins could do the same logic natively. That largely led to this thread. Right now, I'm engineering a solution for a different use case which is similar-in-scope, related to the topic, yet different enough to learn some new things. At the end of this, I think I will have an even better mix of perspectives to guide me through a JEP. I apologize in advance for bothering everyone in the future with my struggles on creating the reference implementation. To everyone reading, I would still like to collect support for this effort in terms of votes and comments and other peoples struggles in the Issue I linked. Regards, Jerry Gerald R. Wiltse jerrywil...@gmail.com On Mon, May 18, 2020 at 5:55 PM Jesse Glick <jgl...@cloudbees.com> wrote: > As far as I know there is no serious work in progress in this area, > and no particular plan for work on it from the “core team” (maybe a > misleading phrase). > > Indeed `DependencyGraph` as currently defined is very rigid and could > not work well even for moderately subtle Pipeline scenarios, so it > does not seem worth trying to adapt. > > You can define more sophisticated variants of `ReverseBuildTrigger` in > plugins, though I would tend to discourage doing this sort of thing at > the Jenkins level to begin with. Instead it is likely more scalable to > have “downstream” builds be triggered by some external event, such an > artifact appearing in Nexus or an image in a Docker registry. > > Alternatively, you can keep trigger management outside of component > Pipelines altogether, defining some sort of orchestration project that > uses the `build` step internally but in a computed graph. Or this > orchestration can be done by external tools designed for that purpose, > for example using the Jenkins REST API to trigger builds. > > If some larger and more intrusive concept of dependency graphs needs > to make its way into fundamental APIs so that a variety of plugins can > interoperate based on a common understanding of project relationships > (for example so the graph can be displayed in build visualizations), > then someone would need to file a JEP for it and commit to writing a > reference implementation and driving integrations. The added > complexity would need to be justified by new abilities that a lot of > people could enjoy without too much migration effort. > > Some inertia stems from the fact there is no obvious, straightforward, > single best practice for doing CI when you have hundreds of > interrelated components. Some organizations use a monorepo and use > various tools to cache partial build results. Others prefer microrepos > with subtle triggering relationships and special workflows. The build > system often frames the problem. If you have a particular model in > mind then you are in a position to sketch a tool which would help you > and others in the same situation. > > -- > You received this message because you are subscribed to the Google Groups > "Jenkins Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to jenkinsci-dev+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jenkinsci-dev/CANfRfr3oAz%2BFL%3D8FOXufOe0frmXiKeTP7WD9Jis%2BkwFCAkVvLw%40mail.gmail.com > . > -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CAML1RCB636jwU3ZodNFvk08_XoGLb7jrSs2wit-7j5dXiuVN%2Bw%40mail.gmail.com.