Skip to content

Commit

Permalink
Add comparison to Pipelines-as-Code
Browse files Browse the repository at this point in the history
Closes #65.

[ci skip]
  • Loading branch information
michaelsauter committed Oct 13, 2023
1 parent bf4936c commit 5198407
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Note that this ODS Pipeline repository does not provide tasks for building, pack
* [Architecture Decision Records](/docs/adr)
* [Goals and Non-Goals](/docs/design/goals-and-nongoals.adoc)
* [Relationship to Jenkins Shared Library](/docs/design/relationship-shared-library.adoc)
* [Comparison to Pipelines-as-Code](/docs/comparison-pipelines-as-code.adoc)

## Compatibility

Expand Down
22 changes: 22 additions & 0 deletions docs/comparison-pipelines-as-code.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Comparison to Pipelines-as-Code

The following details some similarities and differences between ODS Pipeline and link:https://github.com/openshift-pipelines/pipelines-as-code[Pipelines-as-Code]. It is not intended to suggest one or the other but to serve as a starting point to compare the two. The information used in the comparison was last updated on 2023-10-13.

## Similarities

* Built on top of Tekton / OpenShift Pipelines
* Allow to define pipelines in the source code repository
* Trigger pipeline runs in response to Git push and other events in the version control server
* Report status of pipeline run back to the version control server
## Differences

* ODS Pipeline only works with Bitbucket Server, whereas Pipelines-as-Code works with Gitlab and GitHub as well
* Pipelines-as-Code is installed as part of OpenShift Pipelines, whereas ODS Pipeline is link:https://github.com/opendevstack/ods-pipeline/blob/master/docs/installation.adoc#installation-instructions[offered as a Helm chart]. ODS Pipeline does not use any CRDs which means it can be installed without being cluster admin.
* For Pipelines-as-Code, the definition of a pipeline run is a full `PipelineRun` YAML resource. ODS Pipeline cuts boilerplate by allowing to specify only the link:https://github.com/opendevstack/ods-pipeline/blob/master/docs/ods-configuration.adoc#configuring-pipeline-tasks[tasks of the pipeline to run].
* ODS Pipeline comes with opinionated link:https://github.com/opendevstack/ods-pipeline/blob/master/docs/task-start.adoc[start] and link:https://github.com/opendevstack/ods-pipeline/blob/master/docs/task-finish.adoc[finish] tasks that do quite some plumbing (Git clone, setting Bitbucket status, interaction with Nexus etc.). These tasks are automatically added to each pipeline run.
* ODS Pipeline allows to link:https://github.com/opendevstack/ods-pipeline/blob/master/docs/ods-configuration.adoc#configuring-pipeline-triggers[configure task parameters based on triggers], e.g. allowing to have the same pipeline executed for different branches, but with different parameters.
* ODS Pipeline ships with a built-in concept of "pipeline run artifacts", which allow to retain information about tasks (e.g. executed unit tests, SBOM files etc) in Nexus.
* Based on the "pipeline run artifacts" concept, ODS Pipeline offers a turnkey solution to promote applications from one environment to the other. This functionality is implemented in the start and finish tasks. Users can configure a promotion chain (e.g. DEV -> QA -> PROD) which then moves built artifacts such as container images from one environment to the other. See the link:https://github.com/opendevstack/ods-pipeline/blob/master/docs/example-project.adoc[Example Project] for more details.
* ODS Pipeline provides two Go packages, link:https://pkg.go.dev/github.com/opendevstack/ods-pipeline/pkg/tektontaskrun[tektontaskrun] and link:https://pkg.go.dev/github.com/opendevstack/ods-pipeline/pkg/odstasktest[odstasktest], for testing (any) Tekton tasks in a KinD cluster.
* Pipelines-as-Code allows to link:https://pipelinesascode.com/docs/guide/repositorycrd/#concurrency[configure a concurrency limit] per repository, while ODS Pipeline has a link:https://github.com/opendevstack/ods-pipeline/issues/534[fixed limit of one pipeline run] per repository at a time.

0 comments on commit 5198407

Please sign in to comment.