Merge "Switch xapp-frame-py to gerrit-tox-sonarqube template"
[ci-management.git] / jjb / ric-plt-lib-rmr / ric-plt-lib-rmr.yaml
1 # The ric-plt/lib/rmr repository contains two projects:
2 # 1) C shared library published as deb/rpm to PackageCloud.io
3 # 2) Python bindings published as package to PyPI.org
4 ---
5 - project:
6     name: ric-plt-lib-rmr-project-view
7     project-name: ric-plt-lib-rmr
8     views:
9       - project-view
10
11 - project:
12     name: ric-plt-lib-rmr-info
13     project: ric-plt/lib/rmr
14     project-name: ric-plt-lib-rmr
15     build-node: centos7-builder-1c-1g
16     jobs:
17       - gerrit-info-yaml-verify
18
19 - rmr_common: &rmr_common
20     name: rmr-common
21     # git repo
22     project: ric-plt/lib/rmr
23     # maven settings file has credentials to archive artifacts
24     mvn-settings: ric-plt-lib-rmr-settings
25
26 ### RMR C LIBRARY ###
27
28 - rmr_c_common: &rmr_c_common
29     name: rmr-c-common
30     # jenkins job name prefix
31     project-name: ric-plt-lib-rmr-c
32     # test scripts depend on this name
33     build-dir: $WORKSPACE/build
34     # use an ubuntu for its modern compiler
35     build-node: ubuntu1804-builder-2c-2g
36     # verify and sonar use cmake
37     cmake-opts: -DDEV_PKG=1
38     make-opts: install test ARGS=-V
39     # exclude irrelevant changes
40     gerrit_trigger_file_paths:
41       - compare-type: REG_EXP
42         pattern: '^((?!src/bindings|\/COMMIT_MSG).)*$'
43
44 # verify c changes on every branch
45 - project:
46     name: ric-plt-lib-rmr-c-verify
47     <<: *rmr_common
48     <<: *rmr_c_common
49     jobs:
50       - gerrit-cmake-verify
51     stream:
52       - all:
53           branch: '*'
54
55 # build deb/rpm using Docker and publish to PackageCloud.io
56 # on merge to master branch
57 - project:
58     <<: *rmr_common
59     <<: *rmr_c_common
60     name: ric-plt-lib-rmr-c-package
61     # need docker
62     build-node: ubuntu1804-docker-4c-4g
63     # image is not pushed, use simple name and tag
64     docker-name: '{name}'
65     container-tag-method: latest
66     # use host network for network resources
67     docker-build-args: '--network=host -f ci/Dockerfile'
68     jobs:
69       - oran-gerrit-docker-ci-pc-merge
70     stream:
71       - master:
72           branch: master
73
74 # promote deb/rpm from staging to release at PackageCloud.io
75 - project:
76     <<: *rmr_common
77     <<: *rmr_c_common
78     name: ric-plt-lib-rmr-c-release
79     # release uses sigul which requires centos
80     build-node: centos7-builder-1c-1g
81     jobs:
82       - gerrit-packagecloud-release-verify
83       - gerrit-packagecloud-release-merge
84
85 # analyze C code and test coverage
86 - project:
87     name: ric-plt-lib-rmr-c-sonar
88     <<: *rmr_common
89     <<: *rmr_c_common
90     sonar-project-file: ""
91     sonar-properties: |
92         sonar.login={sonarcloud_api_token}
93         sonar.projectKey={sonarcloud_project_organization}_{project-name}
94         sonar.projectName={project-name}
95         sonar.organization={sonarcloud_project_organization}
96         sonar.build.sourceEncoding=UTF-8
97         sonar.sources=src/rmr
98         sonar.cfamily.build-wrapper-output=$WORKSPACE/bw-output
99         sonar.cfamily.gcov.reportsPath=test
100     jobs:
101       - gerrit-cmake-sonarqube
102
103 ### RMR PYTHON PACKAGE ###
104
105 - rmr_py_common: &rmr_py_common
106     name: rmr-py-common
107     # jenkins job name prefix
108     project-name: ric-plt-lib-rmr-py
109     # the pre-build-script installs RHEL packages
110     build-node: centos7-builder-1c-1g
111     # install prereqs
112     pre-build-script: !include-raw-escape: ../shell/install-rpm-nng-rmr.sh
113     python-version: python3.6
114     # bindings live in a subdirectory
115     tox-dir: src/bindings/rmr-python
116     gerrit_trigger_file_paths:
117       - compare-type: REG_EXP
118         pattern: 'src/bindings/rmr-python/.*'
119
120 # verify py changes on every branch
121 - project:
122     <<: *rmr_common
123     <<: *rmr_py_common
124     name: ric-plt-lib-rmr-py-verify
125     stream:
126       - all:
127           branch: '*'
128     jobs:
129       - gerrit-pypi-verify
130
131 # build and publish distributions to test.pypi.org from master
132 - project:
133     <<: *rmr_common
134     <<: *rmr_py_common
135     name: ric-plt-lib-rmr-py-merge
136     stream:
137       - master:
138           branch: master
139     jobs:
140       - gerrit-pypi-merge
141
142 # promote package from test.pypi.org to pypi.org
143 - project:
144     <<: *rmr_common
145     <<: *rmr_py_common
146     name: ric-plt-lib-rmr-py-release
147     jobs:
148       - '{project-name}-gerrit-pypi-release-jobs'
149
150 # analyze Py code and test coverage
151 - project:
152     <<: *rmr_common
153     <<: *rmr_py_common
154     name: ric-plt-lib-rmr-py-sonarqube
155     sonar-project-file: ""
156     sonar-properties: |
157         sonar.login={sonarcloud_api_token}
158         sonar.projectKey={sonarcloud_project_organization}_{project-name}
159         sonar.projectName={project-name}
160         sonar.organization={sonarcloud_project_organization}
161         sonar.build.sourceEncoding=UTF-8
162         sonar.sources=src/bindings/rmr-python
163         sonar.exclusions=setup.py,tests/*.py
164         sonar.python.coverage.reportPaths=coverage.xml
165     jobs:
166       - gerrit-tox-sonarqube