CI Pipeline Outputs to be shown in Pipeline list (and elsewhere)
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Problem to solve
The way we use pipelines and CI for our core SDK in our product, is to publish artifacts to a package repository (e.g. Nuget, similar to NPM etc.). From that repository, we base all our other code on that SDK, by referencing versions. One menial task we often have is to identify the "latest version" that we can use. To find that, we do the following today:
- Find the SDK repository
- Open up pipelines, find the latest build pipeline for "develop" (its usually on the first page)
- Open up the "publish" build job to see its log
- At the bottom (default view shows the last lines in the log), we've added a textual output saying "Version: 1.2.3-alpha"
What I'd propose, is that a CI job can output a number of values. Like "Version" to "1.2.3-alpha". I'd then like the UI in Gitlab, to display these values in some places. I could f.ex. determine that the "pipeline display text" should be "abc", and then that would be shown for the pipeline.
Intended users
Developers, managers. Any one needing to know some crucial value / property for a project.
Further details
I imagine that a job will be able to output many values, in key-value format. All these values should be displayed next to the log, next to runner and timing info:
Potentially, these values could be set on any subsequent job that depends on this job. F.ex. one job could output "Version" to "1.2.3", and the next job (depending on the first) would then have an Environment variable with $CI_JOB_VALUE_Version set to "1.2.3".
I imagine that the CI configuration, or a special value called "Pipeline display" or something, could identify what to show as a Pipeline text. The pipeline text could be shown a number of places, like here, next to the build results (text in black added as examples - blanks for failing pipelines):
Proposal
I imagine that a CI job could:
- Set a number of environment variables, like
CI_OUTPUT_MyValue, which will be persisted by the runner - Write a number of log messages, like we do Timing / Section information now
Gitlab would parse/interpret/persist this when it receives the job log (or wherever the information is stored). The results will basically be stored in an EAV table in the database, with the columns: job_id, key, value. Whenever the "pipeline text" job value is encountered (known via repository configuration or by convention), the pipeline in question is updated, setting the new text.
Views that could show this value:
- Pipeline list, as in my picture above
- The repository main page, next to project id - it could show the latest default branch's successful pipelines "text" (see picture below)
Permissions and Security
As I understand it: if you can see the repository, you can see the pipelines - so therefore you can see any data associated, such as output variables.
Documentation
What does success look like, and how can we measure that?
The ability to store output and display it on Gitlab UI is the success.


