Filters for pipelines
<!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION --> *This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.* <!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION --> ### Problem to solve As a developer, I'd like to be able to zero in on things that matter to me, as opposed to things that matter to the whole team. The new Pipelines list is great at condensing all the build jobs into single lines per commit trigger, but I'd like to go further and have a view of just "my pipelines". This should be available for an individual project, as well as at a GitLab-wide level so I can see all CI pipelines across all projects I contribute to. Need statement: **The user** needs a way to **see their own pipeline progress (plural) across a context** so that they can **be informed of the collective pipeline activity**. ### Intended users <!-- Who will use this feature? If known, include any of the following: types of users (e.g. Developer), personas, or specific company roles (e.g. Release Manager). It's okay to write "Unknown" and fill this field in later. Personas can be found at https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/ --> [Sasha (Software Developer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sasha-software-developer) ### Further details <!-- Include use cases, benefits, and/or goals (contributes to our vision?) --> The new context direction of the original problem statement has been scoped of to a separate issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/65040. This issue will focus on filtering only. ### Proposal <!-- How are we going to solve the problem? Try to include the user journey! https://about.gitlab.com/handbook/journeys/#user-journey --> This proposal will enable filtering the project pipeline list on: - `trigger author` (high priority for scope) (https://gitlab.com/gitlab-org/gitlab/-/issues/215367) - `pipeline status` (https://gitlab.com/gitlab-org/gitlab/-/issues/217617) - `trigger source` (https://gitlab.com/gitlab-org/gitlab/-/issues/233495) It will use the existing search/filter paradigm from the [issue/merge request list](https://gitlab.com/gitlab-org/gitlab-ce/issues), and have the default open search functionality querying: - `branch name` (high priority for scope) (https://gitlab.com/gitlab-org/gitlab/-/issues/215367) - `tag name` (https://gitlab.com/gitlab-org/gitlab/-/issues/217617) ### UI [:gem: specs](https://gitlab-org.gitlab.io/gitlab-design/hosted/dimitrie/ce18054-pipeline-filters-spec-previews) | Title | Details | Mockup | | ------ | ------ | ----- | | Search and filter result | Tabs will adjust their number badges as well | ![high_fid_1](/uploads/3db5a6a7080812c79efb049ba7fb01ad/high_fid_1.png)| | Status filter | Token inherits status color and features pipeline status icon and status name <br><br> dropdown features pipeline status icons | ![high_fid_status](/uploads/5a63b2c6fffbfc1b6bc1d288a847506a/high_fid_status.png) | | Trigger author filter | Token features trigger author avatar and name <br><br> dropdown features trigger author avatar, name, and username | ![high_fid_author](/uploads/cd6353f064ff006aadf86ba24176a667/high_fid_author.png) | | Trigger source filter | Token features trigger source name <br><br> dropdown features trigger source name | ![high_fid_source](/uploads/e1bc2c1593e509c0af3a555d010a745a/high_fid_source.png) | | General search | Features 4 options | ![high_fid_search](/uploads/7bff4fcd150a5e0980bb6a480d54c36c/high_fid_search.png) | Pipeline status: - Canceled - Created - Failed - Manual - Not found - Passed - Running - Skipped - Warning Trigger author: - Same as https://gitlab.com/gitlab-org/gitlab-ce/issues for `assignee`. Trigger source: - API - External - Git push - Manual - Schedule General search: - Status - icon: `status-created` - Trigger author - icon: `user` - Trigger source - icon: `fire` ### Permissions and Security <!-- What permissions are required to perform the described actions? Are they consistent with the existing permissions as documented for users, groups, and projects as appropriate? Is the proposed behavior consistent between the UI, API, and other access methods (e.g. email replies)? --> ### Documentation <!-- See the Feature Change Documentation Workflow https://docs.gitlab.com/ee/development/documentation/feature-change-workflow.html Add all known Documentation Requirements here, per https://docs.gitlab.com/ee/development/documentation/feature-change-workflow.html#documentation-requirements --> > What concepts and procedures should the docs guide and enable the user to understand or accomplish? This is only available for the project pipeline list currently. You can search or filter down on a certain scope of pipelines across a project's context. For example your own, based on a certain branch, or from a certain source. Additionally, it will be easier to find pipelines with uncommon statusses that have warnings or are not found. Additive filters will be considered in the future (this might help to see all pipelines from a team working on the same project for example). > To this end, what new page(s) are needed, if any? What pages/subsections need updates? Consider user, admin, and API doc changes and additions. - https://docs.gitlab.com/ee/ci/pipelines.html > For any guide or instruction set, should it help address a single use case, or be flexible to address a certain range of use cases? It will address a range of use cases by allowing the user to search filter down the pipeline scope across a project's context. > Do we need to update a previously recommended workflow? Should we link the new feature from various relevant locations? Consider all ways documentation should be affected. - https://docs.gitlab.com/ee/ci/pipelines.html#visualizing-pipelines - https://docs.gitlab.com/ee/ci/pipelines.html#accessing-pipelines > Are there any key terms or task descriptions that should be included so that the docs are found in relevant searches? - Filtering pipelines by - Trigger author - Trigger source - Pipeline status - Search pipelines by branch/tag name > Include suggested titles of any pages or subsections, if applicable. - Filtering pipelines by status - Filtering pipelines by trigger author - Filtering pipelines by trigger source - Search pipelines by branch/tag name ### Testing <!-- What risks does this change pose? How might it affect the quality of the product? What additional test coverage or changes to tests will be needed? Will it require cross-browser testing? See the test engineering process for further guidelines: https://about.gitlab.com/handbook/engineering/quality/guidelines/test-engineering/ --> ### What does success look like, and how can we measure that? <!-- Define both the success metrics and acceptance criteria. Note that success metrics indicate the desired business outcomes, while acceptance criteria indicate when the solution is working correctly. If there is no way to measure success, link to an issue that will implement a way to measure this. --> #### Potential follow up problem/need statements <details> - **The user** needs a way to **be able to see all pipelines activity in their organization** so that they can **see be informed across multiple contexts from within a single place**. - **The user** needs a way to **be able to see all the running pipelines in their organization** so that they can **see when/where things are queueing up in order to know how/when to scale**. - **The user** needs a way to **sort latest pipelines within a specific filtered context depending on their status** so that they can **prioritize the need for potential investigations more efficiently**. - **The user** needs a way to **filter by branch name** so that they can **be informed only by production pipelines, including making it easier to rollback to a previous successful deployment**. - **The user** needs a way to **filter on pipelines with certain jobs included** so that they can **be informed only by pipelines which involve for example deployments**. </details> ### Links / references * Depends on gitlab-ce#18992 * Slack Channel (Internal Link only) [#f_pipeline_filters](https://gitlab.slack.com/app_redirect?channel=f_pipeline_filters)
epic