diff --git a/README.md b/README.md index 2bcd2708..0f0a2526 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/docs/comparison-pipelines-as-code.adoc b/docs/comparison-pipelines-as-code.adoc new file mode 100644 index 00000000..4b3085e9 --- /dev/null +++ b/docs/comparison-pipelines-as-code.adoc @@ -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.