Support JSonnet format as alternative to YAML for CI configuration

Problem to solve

JSonnet can be used to provide an alternative/simplified syntax to implement your .gitlab-ci.yml because it supports YAML as an output type (see Kubernetes example which generates YAML from JSON).

Intended users

Maintainers of .gitlab-ci.yml who are managing a lot of complexity in their configuration.

Further details

This could be an intermediary step for issues like https://gitlab.com/gitlab-org/gitlab-ce/issues/45828 which allow for more flexibility in generating the .gitlab-ci.yml.

Drone.io implemented support for this in their 1.0 release.

Proposal

We would implement a JSonnet parser to invoke that would generate the .gitlab-ci.yml, which would then be run. This would be a new intermediary step to execute prior to starting execution but would give teams a lot of flexibility around how they manage complexity in their config.

This feature won't be for everyone, but for a certain class of user it will give them a powerful tool for use with GitLab.

Permissions and Security

Permissions for editing the JSonnet templates should follow permissions for editing the .gitlab-ci.yml.

Documentation

Testing

What does success look like, and how can we measure that?

Links / references

Edited May 29, 2019 by Jason Yavorsky
Assignee Loading
Time tracking Loading