Merge "Add PyPI stage job, drop merge for com/pylog"
[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 ubuntu base for cmake v3
35     # Use docker variant for packagecloud ruby gem
36     build-node: ubuntu1804-docker-4c-4g
37     # install alien package to build RPMS on ubuntu
38     pre-build: !include-raw-escape:
39       - ../shell/install-deb-alien.sh
40     # exclude irrelevant changes
41     gerrit_trigger_file_paths:
42       - compare-type: REG_EXP
43         pattern: '^((?!src/bindings|\/COMMIT_MSG).)*$'
44
45 # verify every commit
46 - project:
47     <<: *rmr_common
48     <<: *rmr_c_common
49     name: ric-plt-lib-rmr-c-verify
50     project-name: ric-plt-lib-rmr-c
51     cmake-opts: -DDEV_PKG=1
52     make-opts: package test ARGS=-V
53     jobs:
54       - gerrit-cmake-verify
55     stream:
56       - master:
57           branch: master
58
59 # development library - package and publish
60 - project:
61     <<: *rmr_common
62     <<: *rmr_c_common
63     name: ric-plt-lib-rmr-c-dev
64     project-name: ric-plt-lib-rmr-c-dev
65     cmake-opts: -DDEV_PKG=1
66     make-opts: package ARGS=-V
67     install-prefix: /usr/local
68     jobs:
69       - oran-gerrit-cmake-pc-stage
70     stream:
71       - master:
72           branch: master
73
74 # runtime library - package and publish
75 - project:
76     <<: *rmr_common
77     <<: *rmr_c_common
78     name: ric-plt-lib-rmr-c-rt
79     project-name: ric-plt-lib-rmr-c-rt
80     cmake-opts: -DDEV_PKG=0
81     make-opts: package ARGS=-V
82     install-prefix: /usr/local
83     jobs:
84       - oran-gerrit-cmake-pc-stage
85     stream:
86       - master:
87           branch: master
88
89 # promote deb/rpm from staging to release at PackageCloud.io
90 - project:
91     <<: *rmr_common
92     <<: *rmr_c_common
93     name: ric-plt-lib-rmr-c-release
94     # release uses sigul which requires centos
95     build-node: centos7-builder-1c-1g
96     jobs:
97       - gerrit-packagecloud-release-verify
98       - gerrit-packagecloud-release-merge
99
100 # analyze C code and test coverage
101 - project:
102     name: ric-plt-lib-rmr-c-sonarqube
103     <<: *rmr_common
104     <<: *rmr_c_common
105     make-opts: test ARGS=-V
106     sonar-project-file: ""
107     sonar-properties: |
108         sonar.login={sonarcloud_api_token}
109         sonar.projectKey={sonarcloud_project_organization}_{project-name}
110         sonar.projectName={project-name}
111         sonar.organization={sonarcloud_project_organization}
112         sonar.build.sourceEncoding=UTF-8
113         sonar.sources=src/rmr
114         sonar.cfamily.build-wrapper-output=$WORKSPACE/bw-output
115         sonar.cfamily.gcov.reportsPath=test
116     jobs:
117       - gerrit-cmake-sonarqube
118
119 ### RMR PYTHON PACKAGE ###
120
121 - rmr_py_common: &rmr_py_common
122     name: rmr-py-common
123     # jenkins job name prefix
124     project-name: ric-plt-lib-rmr-py
125     # the pre-build-script installs RHEL packages
126     build-node: centos7-builder-1c-1g
127     # install prereqs
128     pre-build-script: !include-raw-escape: ../shell/install-rpm-nng-rmr.sh
129     python-version: python3.6
130     # bindings live in a subdirectory
131     tox-dir: src/bindings/rmr-python
132     gerrit_trigger_file_paths:
133       - compare-type: REG_EXP
134         pattern: 'src/bindings/rmr-python/.*'
135
136 # verify py changes on every branch
137 - project:
138     <<: *rmr_common
139     <<: *rmr_py_common
140     name: ric-plt-lib-rmr-py-verify
141     stream:
142       - all:
143           branch: '*'
144     jobs:
145       - gerrit-pypi-verify
146
147 # build and publish distributions to test.pypi.org from master
148 - project:
149     <<: *rmr_common
150     <<: *rmr_py_common
151     name: ric-plt-lib-rmr-py-merge
152     stream:
153       - master:
154           branch: master
155     jobs:
156       - gerrit-pypi-merge
157
158 # promote package from test.pypi.org to pypi.org
159 - project:
160     <<: *rmr_common
161     <<: *rmr_py_common
162     name: ric-plt-lib-rmr-py-release
163     jobs:
164       - '{project-name}-gerrit-pypi-release-jobs'
165
166 # analyze Py code and test coverage
167 - project:
168     <<: *rmr_common
169     <<: *rmr_py_common
170     name: ric-plt-lib-rmr-py-sonarqube
171     sonar-project-file: ""
172     sonar-properties: |
173         sonar.login={sonarcloud_api_token}
174         sonar.projectKey={sonarcloud_project_organization}_{project-name}
175         sonar.projectName={project-name}
176         sonar.organization={sonarcloud_project_organization}
177         sonar.build.sourceEncoding=UTF-8
178         sonar.sources=src/bindings/rmr-python
179         sonar.exclusions=setup.py,tests/*.py
180         sonar.python.coverage.reportPaths=coverage.xml
181     jobs:
182       - gerrit-tox-sonarqube