Having intelligible pipeline is hard if it consists in a lot of stages and jobs
With my friends at my job, we are currently trying to rethink our pipelines with a simple objective: having intelligible names directly when going into the CI/CD -> Pipelines page. But it is not that simply.
We are using GitLab Community Edition to do C/C++ software development and our pipeline is organised in several stages (Build_debug
, Test_debug
, Build_release
, Test_release
, Profiling
, Packaging
, Deploy
). Knowing each job need to have a unique name, our jobs needs to differentiate:
- Our branch type. In our development process we have two kinds of branches: mains (
master
,dev
,release
andhotfixes
) or features (new-*
,issue-*
,optim-*
andmisc-*
) - Our build type. We can compile either in debug or release mode. That's go through our tests and profilings.
- Our operations. We need to know which operation is processed by a given job (Is it compiling? Is it checking the leaks? Is it generating the documentation? ...)
- Our platforms. We need to know on which platform we are computing our operations. We identify it as a couple OS / Architecture for now (linux x86, android arm, ...)
Knowing that it is very hard to have a full intelligible names and we currently need to build some rules to name all of our jobs.
And we went into a question about the need of having a vertical view of our pipelines which would delete all the our issues here. It would have the same organisation except it would be vertical with stages splitted vertically and having only one job per line.
I tried to schematised my idea with my amazing drawing skills.
The current horizontal pipeline view.
The possible vertical pipeline view.
PS: I tried to add some labels but feel free to change them!
gitlab-ce4107606 gitlab-ce4107718 ~"CI/CD"