I would like to propose a Google Summer of Code project idea for native YAML definitions support in Jenkins Pipeline.
Problem: Jenkins Pipeline is a widely used way to define jobs in Jenkins. There are syntaxes: Declarative and Scripted Pipeline. Both of them are based on Groovy DSL, and there is interest in a declarative YAML syntax expressed by users. YAML definitions are widely used in CI/CD systems, including Jenkins X, Tekton, and many popular CI/CD services (see below).
Prior work: For Jenkins Pipeline there are many Pipeline libraries which add support for YAML definitions: Modular Pipeline Library, POET, etc. Even Jenkins project uses YAML definitions for jobs, e.g. in the essentialsTest() step. During GSoC 2018 we implemented a Simple Pull Request Job Plugin which allows defining Pipelines as YAML which is close to the Declarative Pipeline syntax-wise. See the alpha release announcement
here. We have never finalized it, but it could be used as a base for a new project. Similarly, there are plugins like Travis YML which implement YAML definition support for Pipeline.
In this project idea we propose to continue the Pipeline-as-YAML experiment. It can be done by a student by continuing work on the existing plugin, by creating a new plugin or by contributing to Declarative Pipeline or shared libraries. The YAML syntax could be close to
Jenkins X Pipelines or to existing shared libraries. I think it could be a great project with high value to the Jenkins community and users.
Thanks in advance,
Oleg Nenashev