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

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.

Links / references

  1. https://www.w3.org/TR/xmlschema-1/
  2. http://www.xfront.com/GlobalVersusLocal.html
Edited by 🤖 GitLab Bot 🤖