The purpose of this document is to describe the software system, including all functional and non-functional requirements. It states what is needed in terms of features, functions, performance, constraints, and quality.
ODS Pipeline shall provide CI/CD tooling within a Kubernetes cluster such as OpenShift. It shall interface with an ODS core installation (specifically, Bitbucket and Nexus). Tasks may create artifacts of their work, which shall be stored in Nexus and are intended to be used as evidence in technical documentation.
SRS-GENERAL-1 |
ODS Pipeline shall be installable in Kubernetes (1.24+) clusters with Tekton (0.41+) installed. |
SRS-GENERAL-2 |
ODS Pipeline shall be installable in OpenShift (4.11+) clusters with the OpenShift Pipelines (1.9+) operator installed. |
SRS-GENERAL-3 |
ODS Pipeline shall be installable within a namespace without cluster admin permissions. |
SRS-GENERAL-4 |
ODS Pipeline shall function within corporate networks (must support private CA). |
SRS-GENERAL-6 |
ODS Pipeline shall support installation from within an OpenShift Web Terminal when the OpenShift API cannot be accessed from outside the cluster. |
SRS-PIPELINE-MANAGER-1 |
The pipeline manager shall be able to respond to |
SRS-PIPELINE-MANAGER-2 |
The pipeline manager shall not trigger pipelines for Git commits which message instructs to skip CI. |
SRS-PIPELINE-MANAGER-3 |
The pipeline manager shall create a pipeline run corresponding to the definition in the ODS config file in the Git repository. |
SRS-PIPELINE-MANAGER-4 |
The pipeline manager shall create a PVC for use as a pipeline run workspace per repository. |
SRS-PIPELINE-MANAGER-5 |
The pipeline manager shall prune pipeline runs per repository. |
SRS-PIPELINE-MANAGER-6 |
The pipeline manager shall prevent concurrent pipeline runs for one repository. |
SRS-PIPELINE-MANAGER-7 |
The pipeline manager shall be able to trigger different pipelines dependent on the configured events and parameterize those pipeline runs based on the matching trigger. |
SRS-TASK-START-1 |
The task shall check out a fresh copy of a Git repository.
|
SRS-TASK-START-2 |
The task shall store context information for each checked out repository (such as project and component key, Git commit SHA, target environment, etc.) |
SRS-TASK-START-3 |
The task shall be able to discover artifacts connected to the checked out commit in a Nexus repository and make them available to subsequent tasks. |
SRS-TASK-START-4 |
The task shall set the Bitbucket build status of the checked out commit being to "in progress". The build status shall link back to the pipeline run. |
SRS-TASK-START-5 |
When an artifact source is configured, the task shall fail when any child repository is missing a successful pipeline run artifact for the checked out commit. |
SRS-TASK-START-6 |
The task shall support caching. Caching shall enable persisting build dependencies. Caching shall enable to reuse build outputs and artifacts if a build tasks runs when the associated working directory has not changed. |
SRS-TASK-FINISH-1 |
The task shall set the Bitbucket build status to "failed" or "successful", depending on whether all tasks succeeded or not. The build status shall link back to the pipeline run. |
SRS-TASK-FINISH-2 |
The task shall create an artifact representing the pipeline run. |
SRS-TASK-FINISH-3 |
The task shall be able to upload all artifacts to a Nexus repository, associating them with the checked out commit. |
SRS-TASK-FINISH-4 |
The task shall send a notification to a configured webhook about the pipeline run status. |