Right now, there is very little information available to users as to how soon a CI build might start (especially on GitLab.com). Often times, users are left wondering why jobs won't run. Displaying information about how many builds are waiting in the queue, the age of the oldest pending build, and number of builds currently running would be very helpful.
Ideally, the backlog information would be displayed individually for each runner (checking for matching tags), but this might be too hard on resources. At the very least, this information should be displayed for the shared runners as a whole. Checks will need to be made to make sure builds aren't counted that will never be run due to tags not matching (causing inflated counts).
An example of what this might look like (for per-runner information):
Good idea. It seems easy to show how many builds are we executing, but it's hard to say how many builds are in queue, because it requires some complicated check to do so.
In theory, it could perform the same DB query as the "get next job" query, but COUNT(*) and without the LIMIT (if that is how it is implemented; guessing here). I do not know how much impact that would have on page loads, but it might not be too much as every idle runner checks for available builds every couple of seconds anyways.
@rabbitfang It's problem because of this: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/app/services/ci/register_build_service.rb#L19. That each runner have a tags, and different configuration options that constraints what builds it can process. It'll be hard to reliably show how many builds is queued on specific runner. It's easy to show how many builds are running on it, it's easy to show how many builds globally is in queue that have shared runners enabled.
@ayufan That doesn't seem to be a problem. While we won't be able to say definitively that runner A will get these X set of builds and runner B will get these Y set of builds due to possible overlap of tags, we could show the number of builds that are available for each runner.
For example, if runner A and B both have the docker tag, runner A also has tag ruby, and runner B has tag golang, with the following builds:
Tags docker
Tags docker, ruby
Tags docker, ruby, foo
Tags docker, golang
Runner A will show 3 builds in queue, and runner B will show 2.
@rabbitfang Yes, I know that, but this is very CPU/DB intensive operation to calculate an exact numbers of builds that can be picked by that runner. This is definitely not something that we would like to calculate on every page request.
I got here looking for a view that makes it more obvious if I have a bottleneck on my specific runners. Couple of ideas
As suggested a list of potential jobs for the runner would accomplish this.
A list of pending ci jobs for a group would work as well, in my case I don't share runners between groups generally. Though this is probably premature until #10244 (moved) is further along.
Something a little more generic might be to show all pending ci jobs for any project you own/master. This also is nice because it's similar to how specific runners get shared between projects. This could be enhanced by grouping by potential runners & sorting by age which might be faster to determine.
GitLab is moving all development for both GitLab Community Edition
and Enterprise Edition into a single codebase. The current
gitlab-ce repository will become a read-only mirror, without any
proprietary code. All development is moved to the current
gitlab-ee repository, which we will rename to just gitlab in the
coming weeks. As part of this migration, issues will be moved to the
current gitlab-ee project.
If you have any questions about all of this, please ask them in our
dedicated FAQ issue.
Using "gitlab" and "gitlab-ce" would be confusing, so we decided to
rename gitlab-ce to gitlab-foss to make the purpose of this FOSS
repository more clear
I created a merge requests for CE, and this got closed. What do I
need to do?
Everything in the ee/ directory is proprietary. Everything else is
free and open source software. If your merge request does not change
anything in the ee/ directory, the process of contributing changes
is the same as when using the gitlab-ce repository.
Will you accept merge requests on the gitlab-ce/gitlab-foss project
after it has been renamed?
No. Merge requests submitted to this project will be closed automatically.
Will I still be able to view old issues and merge requests in
gitlab-ce/gitlab-foss?
Yes.
How will this affect users of GitLab CE using Omnibus?
No changes will be necessary, as the packages built remain the same.
How will this affect users of GitLab CE that build from source?
Once the project has been renamed, you will need to change your Git
remotes to use this new URL. GitLab will take care of redirecting Git
operations so there is no hard deadline, but we recommend doing this
as soon as the projects have been renamed.
Where can I see a timeline of the remaining steps?