Hello Bitrise community!
We’re happy to share that we updated our critical path calculation so that it now supports finalizers along with the normal dependencies. Finalizers are a natural part of the task graphs but they bring quite the complexity with them when you are trying to compute the critical path through an invocation.
What’s New?
Next time you are running an invocation you might see the following changes in the corresponding critical path:
- finalizer tasks are properly added to the task chain
- finalizers direct dependencies considered to be part of the critical path are added too, you will see them listed between the finalized task and the finalizer if they are part of the critical path
- we do our best to find the longest path including one of the tasks listed in the invocation (i.e.: for
./gradlew clean assembleDebug
we are searching for a path that includes aclean
or anassembleDebug
task). In case we can’t do that we do our best to return the longest path wihtout them.
As a result we expect to see
- less invocations with a single task as critical path
- less invocations where we can’t present a critical path for you
Here is an example that might help to demonstrate our goal. Consider the following task graph:
One would expect the following as the critical path for the above:
Happy debugging!