Skip to content

[Bug]: Postpone jobs, which doesn't have any dependants to the end of the build order. #2086

@freddydk

Description

@freddydk

AL-Go version

latest

Describe the issue

I want to build all projects first and then run tests afterwards, this is not really possible today.

Today, projects are sorted in order of dependencies and as soon as projects are built, the project which tests the apps in that project will be built in the next round. This behavior causes projects which runs tests to be performed side-by-side with build projects, delaying the builds unnecessarily.

We are aiming to have build projects to complete in 1-2 minutes and test projects will often take much longer. When test projects are run side-by-side with build projects, the subsequent build projects will wait for the test projects even though it isn't necessary.

We want this:
image

to become this:
image

Which completes in 2:01, saving a full 45 minutes from the first run, just by re-ordering and allowing people to see compile errors up-front - fail early!

The key difference here is just the order in which projects are built/tested. In the first run, build3 had to wait 30 minutes until the test run was done before building the next jobs, and 1 hour and 44 until the last build jobs would run.
In the second run - all test jobs are running in parallel at the very end, getting compile errors quicly and postponing test runs until the very last.

If necessary, I can put the modified behavior behind a setting, so that you can get the old behavior if you like.

Expected behavior

No unnecessary delays when building projects.

Steps to reproduce

Create a multi-project repository, with 4 levels of depth like:
P0 contains app and test app
P1 contains app (with dependency on P0) and test app
P2 contains app (with dependency on P1) and test app
P0.test points to test folder in P0
P1.test points to test folder in P1
P2.test points to test folder in P2

Run CI/CD, you will see:

P0 built first
Then P1 + P0.Test
Then P2 + P1.Test
Then P2.Test

Should be

P0
Then P1
Then P2
Then P0.Test + P1.Test + P2.Test

Additional context (logs, screenshots, etc.)

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    In ProgressIssue is actively being worked onbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions