GitlabCI pipeline configuration with XML file format
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Problem to solve
As a developer, I want to configure gitlab continuous integration pipelines with XML file format instead of YML, so I can be sure that before pushing to my repository that the CI pipeline configuration is wellformed.
Intended users
- Delaney (Development Team Lead)
- Sasha (Software Developer)
- Devon (DevOps Engineer)
- Sidney (Systems Administrator)
Further details
YAML, JSON, and many other file serialization formats attempt to solve the verbosity of XML file format,
by adding clutter such as indentation mattering or having the ability to mix contexts (array versus object
versus single value), but none of them retain the main feature of it: structural security. As a result, I,
as a developer, as someone who does deployment operations, without any external tools (Gitlab CI yaml format
plugin is considered an external tool in this context, as well as the [projecturl]/-/ci/lint validator),
cannot configure gitlab continuous integration pipelines without leaving and/or configuring my environment
to SPECIFICALLY support the gitlab CI file format.
In addition, shipping the XML schema definition files, helps users of text editors that support XML documents to configure them to validate the XML document that uses that schema.
Finally, having a well defined XSD file helps other tools to generate other documents around the domain data model.
Proposal
Add notification about XML schema support in gitlab-ci.yml documentation Link the XSD file and instructions how to add it to user's IDE. (in intellij it's as simple as invoking "Manually setup external resource")
Permissions and Security
It is intended that there would be no permissions scope change. From security point of view, the XML deserialization/serialization tool
MUST NOT support fetching external XSD files, MUST NOT support deserializing CData definitions, and MUST NOT support external
type redefinitions (as seen by "http://www.w3.org/2001/XMLSchema-instance":type attribute abuse to define which subclass should
element be deserialized to).
Documentation
The change will require some of the following:
- Integration test changes
- End-to-end test change
What does success look like, and how can we measure that?
Adoption of XML based configurations in at least 10% of new projects as of implementation of this feature.
What is the type of buyer?
While this change is intended to target free tier, it might as well be shipped for bronze or up tiers.
Is this a cross-stage feature?
No. This change only targets the CI interface via gitlab-ci.yml file.