aboutsummaryrefslogtreecommitdiffstats
path: root/docs/onap-integration-ci.rst
diff options
context:
space:
mode:
authormrichomme <morgan.richomme@orange.com>2020-03-12 14:50:19 +0100
committerMarcin Przybysz <marcin.przybysz@nokia.com>2020-03-12 13:56:33 +0000
commit5649e668741517c88bc793627449075bc4333e6e (patch)
tree56d2debb92641dbdb604d15d9631977ea693ebc1 /docs/onap-integration-ci.rst
parent152a480ec12d922ddb3c83930924d64faed52c55 (diff)
Finalize CI document for integration
Issue-ID: INT-1446 Signed-off-by: mrichomme <morgan.richomme@orange.com> Change-Id: I7ca12c6b5219b25847bf3da6e17adc1219917d33
Diffstat (limited to 'docs/onap-integration-ci.rst')
-rw-r--r--docs/onap-integration-ci.rst145
1 files changed, 142 insertions, 3 deletions
diff --git a/docs/onap-integration-ci.rst b/docs/onap-integration-ci.rst
index 6cd094390..fa03d1095 100644
--- a/docs/onap-integration-ci.rst
+++ b/docs/onap-integration-ci.rst
@@ -10,7 +10,7 @@ Several chains have been created:
- Daily master chain
- Gating: On demand deployment of a full ONAP solution to validate patchsets
-They are run on different environments.
+They are run on different environments (Orange labs, DT labs, Azure Cloud).
The following document will detail these chains and how you could set up such
chains and/or provide test results to the community.
@@ -21,17 +21,156 @@ Integration CI Ecosystem
Overview
~~~~~~~~
+The global ecosystem can de described as follows:
+
+.. figure:: files/CI/ONAP_CI_10.png
+ :scale: 60 %
+ :align: center
+
+Several chains are run in ONAP.
+The CI chains are triggered from different CI systems (Jenkins or gitlab-ci) (1)
+on different target environments hosted on community labs (Windriver,
+Orange, DT, E///) or Azure clouds. Jobs (installation, tests) are executed on
+these labs (2). At the end, the results are pushed through the OPNFV test API (3)
+to a test database (4) hosted by Linux Foundation on
+http://testresults.opnfv.org.
+Results can be reported in different web pages hosted on LF or on gitlab.com (5).
+
+
Daily Chains
~~~~~~~~~~~~
+CI daily chains (Master and last Stable) are run on Orange, DT using gitlab-ci
+jobs and Ericsson using jenkins jobs.
+
Gating
~~~~~~
+OOM gating has been introduced for El Alto. It consists of a deployment followed
+by a set of tests on patchsets submitted to OOM repository.
+
+The CI part is managed on gitlab.com and the deployment is executed on ONAP
+Orange lab and Azure clouds.
+The goal is to provide a feedback - and ultimately to vote - on code change
+prior to merge to consolidate the OOM Master branch.
+
+The developer can evaluate the consequences of his/her patchset on a fresh
+installation.
+
+The gating is triggered in 2 scenarios:
+
+ - new patchset in OOM
+ - comment with the magic word **oom_redeploy** is posted in the Gerrit's comment
+ section
+
+The procedure to submit new feature in CI is done in 3 steps as described in the
+figure below:
+
+.. figure:: files/CI/3steps gating.png
+ :scale: 100 %
+ :align: center
+
+
+Visualization of the CI pipelines
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+As the CI chains are triggered from different systems, several web interfaces
+can be used to visualize them.
+
+A web site has been created to centralize the links on http://testresults.opnfv.org/onap-integration/index.html
+
+.. figure:: files/CI/ONAP_CI_3.png
+ :scale: 60 %
+ :align: center
+
+For Gating and gitlab.com based CI chains, the pipelines consist in pipelines of
+pipelines managed through the chaining of .gitlab-ci.yml file thanks to an Open
+Source deployment called chained-ci (https://gitlab.com/Orange-OpenSource/lfn/ci_cd/chained-ci).
+A visualization tool is available to list all your chains as described in the
+figure below:
+
+.. figure:: files/CI/ONAP_CI_1.png
+ :scale: 60 %
+ :align: center
+
+If you click on any element of the chain, you will open a new window:
+
+.. figure:: files/CI/ONAP_CI_2.png
+ :scale: 60 %
+ :align: center
+
+In order to provide the logs to the developer an additional web page has been
+created to summarize the tests and grant access to their associated logs:
+
+.. figure:: files/CI/ONAP_CI_8.png
+ :scale: 60 %
+ :align: center
+
+Additionnaly, for the daily chain, another page displays the results as time
+series, allowing to see the evolution of the tests over time.
+
+.. figure:: files/CI/ONAP_CI_9.png
+ :scale: 60 %
+ :align: center
+
+
Setup Your Own CI Chains
------------------------
+If you want to setup a gitlab.com based CI chain, and want to use chained-ci,
+you can follow the tutorial on https://gitlab.com/Orange-OpenSource/lfn/ci_cd/chained-ci-handson
+
+You should be able to chain your automation projects:
+
+* Create resources
+* Deployment of Kubernetes
+* Test of your Kubernetes (using OPNFV functest-k8s tests)
+* Deployment of your ONAP (you can use your own automatic installation
+ procedure or https://gitlab.com/Orange-OpenSource/lfn/onap/onap_oom_automatic_installation/)
+* Test ONAP thanks to the differnet ONAP xtesting dockers covering infrastructure
+ healthcheck, components healthcheck tests, end to end tests, security tests.
+
+If you want to report your results to the community, do not hesitate to contact
+the integration team. The Test database is public but the pods must be declared
+to be allowed to report results from third party labs.
+
+
ONAP Integration Testing Gate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-ONAP Full CI Chain
-~~~~~~~~~~~~~~~~~~
+5 categories have been defined for the ONAP integration testing gate:
+
+* infrastructure healthcheck: verify ONAP from a k8S perspective. It includes
+ 2 tests: onap-k8s (all the deployments, jobs, statefulste,..must be OK at
+ the end of an installation), onap-helm (all the helm chart must be
+ completed at the end of the installation)
+* healthcheck: the traditionnal robot tests run from the cluster to perform
+ tests on the different components.
+* smoke-usecases: End to end tests
+* candidate-usecases: New end to end tests introduced in the automation chain
+ for the release
+* security tests (security of kubernetes (CVE, CIS tests) and ONAP (exposed
+ ports, check the containers run as root,...))
+* benchmarking (robustness, stress tests): not yet available
+
+All these tests have been packaged thanks to the OPNFV Open Source tool xtesting.
+Xtesting is a python package allowing to unify the way to declare, run tests. It
+also ensures a consistent way to get the test results whatever the test framework
+used (python, robotframework, bash, ...). It includes the mechanism to
+automatically push the results to the test database using the test API.
+It simplifies the integration in CI.
+
+The package can be found here https://pypi.org/project/xtesting/.
+
+The different ONAP xtesting dockers can be found on https://gitlab.com/Orange-OpenSource/lfn/onap/integration/xtesting/container_registry
+
+As an illustration, you can run the infrastructure healthcheck by typing the
+following command::
+
+ docker run -v <the kube config>:/root/.kube/config -v <result directory>:
+ /var/lib/xtesting/results registry.gitlab.com/orange-opensource/lfn/onap/integration/xtesting/infra-healthcheck:latest
+
+All the xtesting tests are included in Daily and gating chains.
+Please note that you can build your own onap-xtesting docker if you want to
+include your tests. See https://wiki.onap.org/pages/viewpage.action?pageId=79202765
+for details.