The new “My Workspace” page introduced in Cider-CI 3.6 “Peacock”, and extended in Cider-CI 3.13 “Frisco”, combines the information previously located in the “Commits” and “Jobs” pages. This article discusses the underlying rational and advanced usage.
One objective of the "Workspace" page is to give a quick overview over commits and related jobs.
To this end the first table shows the most recent commits. The related jobs are shown within as icons. The name of the job is revealed by a mouseover tooltip, and other wise hidden to save space. Multiple jobs within a commit row are ordered by name.
Every job shown via an icon in the commits table has a dedicated row in the jobs table below. They are ordered chronologically1 in most recently created order.
The position of a commit within a branch is shown by a subscript prefix number.
Branch heads are denoted with a 0
prefix and are additionally displayed in
bold face.
In this example the commit 1eddf0
is the current head of of the
branch tmp
in the project Cider-CI
. 20a2c
is the ancestor of 1eddf0
(and by that 1 behind the head of tmp) and the current head of master.
The default filter options focus on branch heads and hide deeper commits. This can be changed up to the point of showing commits which are no longer related to a branch. Setting to depths of 1 (or higher) is convenient to compare the outcome of jobs to the previous commit(s).
The workspace page (and really any page of the Cider-CI UI ) integrates well with web-browsers. Filter URLs can be bookmarked and will produce expected results by applying the bookmarked filter parameters.
Using the Filter
(or Reset
) button causes the filter parameters to be
stored for the signed in user2. This comes with two intentional
side effects:
When clicking on a Workspace
link via the UI the stored filter settings
for the user will be reproduced3, and
if the requested filter parameter match the stored ones4 the page will be displayed with the My Workspace title.
With Cider-CI 3.13 Frisco the filtering options have been extended and the "My work" and "Branches" buttons have been added.
The "My work" button filters by "My commits" and sets the depth to "Any depth". The commits are filtered by e-mail addresses configured with the user account. If your Cider-CI instance is configured to use GitHub OAuth2, see the article GitHub Integration, the e-mail addresses will be added automatically.
The "Branches" button in converse switches the filtering option to show only the heads of branches and removes the "My commits" option.
Experience shows that the two shortcut filters cover most of the daily filtering requirements. They have also been chosen this way because the the underlying queries perform well in general.
The repository name, as well as the branch name input accept a string, or
a sequence of strings separated by commas, or a regular expression
indicated by a prepending ^
which is a mandatory part of the regular
expression. A sequence is combined with logically or. Regular expressions
are interpreted case insensitive and are particular convenient to match all
projects with a shared prefix name, e.g. ^cider-ci
matches Cider-CI
User-Interface
, Cider-CI Integration-Tests
, and so on.
The text search input uses the subject, author, and committer fields of a commit. It is in particular useful if the author name is sufficiently distinct from common words for filtering e.g. all of the last commits of a person.
The git-ref can be the full 40, or a short prefix, of the hex character representation of either a git commit SHA1 or the git tree SHA1. Searching for a git-ref is usually combined with lifting the depth restriction to Any depth.
The code behind the "My Workspace" page is designed to show the page in less than 200 milliseconds for typical use cases5.
Certain query parameters combined with projects of a long history and many
branches can result in very slow queries. Diverging from the default
depth
setting (Heads only
) is a typical case.
The Cider-CI server will abort the query it surpasses a predefined threshold of three seconds. The user can then reset the query parameters and reformulate them such that the query performs more efficiently. It can be at times counter intuitive but seemingly more elaborate query parameters perform generally better since they restrict the search space more efficiently.
The jobs are not ordered as in the commits table because one job can (and in the case of using e.g. the reflow workflow most likely will) appear in multiples commits. ↩
This is the reason why setting the filter is not done via a GET
but a POST
HTTP request. ↩
Here and additional HTTP redirect is used to operate within the HTTP specification. ↩
E.g. when the user clicks on the Workspace
link. ↩
Assuming decent hardware and network performance. ↩