|
1 |
| -# Pipeline Service operations |
2 | 1 |
|
3 |
| -## TODO |
| 2 | +### Introduction |
| 3 | +This document provides information on how Pipeline Service is operated and maintained, a SaaS for OpenShift Pipelines. It includes information on the project's working model, deployment modes, testing, security, and upgrade strategy of the operators. The document lists guidelines, which helps ensure a smooth operation of Pipeline Service. |
| 4 | + |
| 5 | +### Project Overview |
| 6 | + |
| 7 | +Pipeline Service is a SaaS (Software as a Service) platform for building and deploying continuous integration and continuous delivery (CI/CD) pipelines. It is designed to work with Kubernetes and OpenShift, and is primarily based on RedHat OpenShift Pipelines under the hood. |
| 8 | + |
| 9 | +More information on Pipeline Service is provided [here](../../README.md). |
| 10 | + |
| 11 | +Development Mode: To facilitate the usage of Pipeline Service, developers and SREs can easily try out the software by running it in Development mode on any OpenShift or Kubernetes cluster. Instructions and details on how to use the Development mode are available [here](../../developer). |
| 12 | + |
| 13 | +### Security |
| 14 | + |
| 15 | +Pipeline Service takes security seriously and strives to provide a secure platform. Pipeline Service enforces security measures through a combination of best practices and tooling, which are used to identify and address potential security issues. The team follows established security best practices, including regular updates to dependencies, strong authentication and authorization mechanisms, and secure communication channels. In addition, various tools are used to scan the codebase for potential security vulnerabilities, including [SAST checks](../../.tekton/pipeline-service-static-code-analysis.yaml) and [vulnerability scanning](../../.github/workflows/periodic-scanner-quay.yaml). |
| 16 | + |
| 17 | +#### SAST Checking & Linters |
| 18 | + |
| 19 | +Pipeline Service uses Static Application Security Testing (SAST) to scan the codebase for potential security vulnerabilities. This is done using tools such as SonarQube, and other open-source tools. The SAST scans are run automatically as part of the Continuous Integration (CI) process, and results are reported back to the development team. |
| 20 | + |
| 21 | +The below tools are currently used in Pipeline Service: |
| 22 | +- [checkov](https://github.com/bridgecrewio/checkov) |
| 23 | +- [hadolint](https://github.com/hadolint/hadolint) |
| 24 | +- [shellcheck](https://github.com/koalaman/shellcheck) |
| 25 | +- [yamllint](https://github.com/adrienverge/yamllint) |
| 26 | + |
| 27 | + |
| 28 | +#### Vulnerability Scanning |
| 29 | + |
| 30 | +Pipeline Service also employs vulnerability scanning to detect and address potential security issues in its dependencies. This is done using Clair. The vulnerability scans are run regularly, and the results are analyzed by the team to identify any potential risks or issues. |
| 31 | + |
| 32 | +### Tests |
| 33 | + |
| 34 | +Pipeline Service employs a rigorous testing process to ensure the quality and reliability of the service. We run tests on every PR as part of the CI process to catch any issues early in the development cycle. As part of each PR, we run SAST checks to identify potential security vulnerabilities and functional tests to ensure that Pipeline Service remains intact. |
| 35 | + |
| 36 | +We use Tekton Pipelines to run our tests. All our tasks, pipelines, and pipelineruns live in the [.tekton folder](../../.tekton) in our repository. This approach allows us to define the test pipelines in a declarative way, making it easy to maintain and modify. In the future, we plan to dogfood Pipeline Service by using it to test itself. This approach also provides an opportunity to identify any potential issues with the service itself and address them before they affect our users. |
| 37 | + |
| 38 | +### Upgrade Strategy for Operators |
| 39 | + |
| 40 | +Pipeline Service uses Operators, specifically OpenShift Pipelines and OpenShift GitOps, to manage the deployment and configuration of its components and this will continue to be the primary way to handle upgrades. However, some components of Pipeline Service are standalone at the moment and are installed/upgraded using upstream manifests. |
| 41 | + |
| 42 | +We use a GitOps approach in upgrading Pipeline Service. We control the version of the components that are deployed and managed by the OpenShift Pipelines operator by specifying the source and channel in the [Subscription](../../operator/gitops/argocd/pipeline-service/openshift-pipelines/openshift-operator.yaml) of the operator. Using this approach, we can upgrade the components of Pipeline Service in a consistent and reliable way. |
| 43 | + |
| 44 | +We also run a test to ensure that Pipeline Service does not break with the upgrade to the operator version. This [test](../../.tekton/pipeline-service-upgrade-test.yaml) is run as part of our CI process. |
| 45 | + |
| 46 | + |
0 commit comments