PoC: Selectable CI Templates
What does this MR do?
- Adoptable template
- Organize the CI template structure
<Context>/<Type>/<Name>.gitlab-ci.yml
-
Context
can be programming language or frame work. - When the language used in repository matches
<Context>
, a corresponding template is suggested. e.g. Ruby 67.9%, JavaScript 19.6%, etc. -
Type
can be one ofpipeline
,stage
orjob
-
pipeline
type is the template to create an end-to-end CI/CD workflow. -
stage
type is the template to create a specific stage in CI/CD workflow. -
job
type is the template to create a specific job in CI/CD workflow.
-
- Global keys can be defined in
Global
context.
- Users can adopt specific pipeline/stage/job at will.
- Organize the CI template structure
- Programmable template
- YAML-Template Renderer Jinja2 - https://ttl255.com/jinja2-tutorial-part-1-introduction-and-variable-substitution/
- We can percentage-rollout newer template with breaking change
- We can allow new projects to use newer template
- We don't need
latest
version template.
Screenshots (strongly suggested)
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entry -
Documentation (if required) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
-
Label as security and @ mention @gitlab-com/gl-security/appsec
-
The MR includes necessary changes to maintain consistency between UI, API, email, or other methods -
Security reports checked/validated by a reviewer from the AppSec team
Edited by Shinya Maeda