Skip to content

pipelinecd/pipeline-script

Repository files navigation

Pipeline script

Pipeline script is a Domain Specific Language (DSL) for describing delivery pipelines (pipeline) as used in the practise of Continuous Delivery (CD), Continuous Deployment and in the basis also Continuous Integration (CI).

The purpose of this project is to be the specification of the pipeline script DSL. And provide a reference implementation to parse the syntax into a model that can be used by other projects to configure existing CI/CD tools with.

Vision

One DSL to describe delivery pipelines in a CI/CD tool agnostic way.

Each CI/CD tool then has its own adapter/importer/way to read the DSL and transform it to the tool specific way of configuring pipelines.

Status

Currently this project is in the specification phase.

This means we’re looking for a common language in the delivery pipelines domain. Looking at configurations used by existing tools like Jenkins, Jenkins Job DSL, Jenkins Workflow DSL, Travis-CI, Wercker, CircleCI, Concourse, Walter, etc. and the best practices in the CI/CD domain.

THIS PROJECT IS ABANDONED

Specification

In the specs directory you can find different pipeline scripts for the different situations, which together make up the pipeline script specification.

See specs/README.adoc for more details on the specification.

Source

The purpose of this source is to build a reference implementation to parse the syntax into a model that can be used to configure existing CI/CD tools..

These are spread over the subprojects in the subprojects directory. The following sections describe the purpose of the different subprojects.

API

Pipeline Script API

DSL

Reference implementation of the Pipeline Script DSL.

Adapter

The different adapter implementations. Each adapter converts a Pipeline Script into adapter tool specific configuration.

eg.: * Jenkins adapter * go.cd adapter * concourse.ci adapter * walter-cd adapter * teamcity adapter

API

The adapter API used by the different adapter implementations.

SCM

The different SCM listener implementations. Each SCM implementation understands the SCM manager specific webhook format, and return the pipeline script info.

eg.: * Github SCM * Gitlab SCM * Stash/Bitbucket server SCM * Bitbucket cloud SCM

API

The SCM API used by the different SCM implementations.

Listener

The different listener applications that support the different combinations of SCM and adapter implementations.

eg.: * Github SCM, Jenkins adapter * Gitlab SCM, Jenkins adapter * Stash/Bitbucket server SCM, Jenkins adapter * Bitbucket cloud SCM, Jenkins adapter

Core

The core listener application library that can be used to simply compose different SCM API and adapter API implementations into a listener service.

TODO

  • Create webhook listeners

    • one for each SCM manager {github|gitlab|stash/bitbucket server|…​} and adapter implementation {jenkins|..} combination

Contribute

Submit a pull-request or create an issue.

About

Pipeline script DSL

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published