X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=jjb%2Fric-plt-lib-rmr%2Fric-plt-lib-rmr.yaml;h=ff3fae16e0924965de2a0114eb3c822b072e302b;hb=refs%2Fchanges%2F64%2F3064%2F4;hp=aa7bcdce8a13b3527e7e7178efbc05865cfdd8df;hpb=62b40d507b1e7eec358192a3d0bffa356a3039a5;p=ci-management.git diff --git a/jjb/ric-plt-lib-rmr/ric-plt-lib-rmr.yaml b/jjb/ric-plt-lib-rmr/ric-plt-lib-rmr.yaml index aa7bcdce..ff3fae16 100644 --- a/jjb/ric-plt-lib-rmr/ric-plt-lib-rmr.yaml +++ b/jjb/ric-plt-lib-rmr/ric-plt-lib-rmr.yaml @@ -1,3 +1,6 @@ +# The ric-plt/lib/rmr repository contains two projects: +# 1) C shared library published as deb/rpm to PackageCloud.io +# 2) Python bindings published as package to PyPI.org --- - project: name: ric-plt-lib-rmr-project-view @@ -17,68 +20,163 @@ name: rmr-common # git repo project: ric-plt/lib/rmr - # jenkins job name prefix - project-name: ric-plt-lib-rmr - # maven settings file has credentials + # maven settings file has credentials to archive artifacts mvn-settings: ric-plt-lib-rmr-settings -# build and publish packages to PackageCloud.io -- project: - <<: *rmr_common - name: ric-plt-lib-rmr - # image is not pushed, use trivial tag - container-tag-method: latest - # image name - docker-name: '{name}' - # use host network for network resources - docker-build-args: '--network=host -f ci/Dockerfile' - # exclude changes in the bindings subdirectory +### RMR C LIBRARY ### + +- rmr_c_common: &rmr_c_common + name: rmr-c-common + # jenkins job name prefix + project-name: ric-plt-lib-rmr-c + # test scripts depend on this name + build-dir: $WORKSPACE/.build + # Use ubuntu base for cmake v3 + # Use docker variant for packagecloud ruby gem + build-node: ubuntu1804-docker-4c-4g + # install alien package to build RPMS on ubuntu + pre-build: !include-raw-escape: + - ../shell/install-deb-alien.sh + # exclude irrelevant changes gerrit_trigger_file_paths: - compare-type: REG_EXP pattern: '^((?!src/bindings|\/COMMIT_MSG).)*$' + +# verify every commit +- project: + <<: *rmr_common + <<: *rmr_c_common + name: ric-plt-lib-rmr-c-verify + project-name: ric-plt-lib-rmr-c + cmake-opts: -DDEV_PKG=1 + make-opts: package test ARGS=-V jobs: - - gerrit-docker-verify - - oran-gerrit-docker-ci-pc-merge + - gerrit-cmake-verify stream: - master: branch: master -# build and publish distributions to PyPI +# development library - package and publish - project: <<: *rmr_common - name: ric-plt-lib-rmr-python - project-name: '{name}' - # sigul requires centos + <<: *rmr_c_common + name: ric-plt-lib-rmr-c-dev + project-name: ric-plt-lib-rmr-c-dev + cmake-opts: -DDEV_PKG=1 + make-opts: package ARGS=-V + install-prefix: /usr/local + jobs: + - oran-gerrit-cmake-pc-stage + stream: + - master: + branch: master + +# runtime library - package and publish +- project: + <<: *rmr_common + <<: *rmr_c_common + name: ric-plt-lib-rmr-c-rt + project-name: ric-plt-lib-rmr-c-rt + cmake-opts: -DDEV_PKG=0 + make-opts: package ARGS=-V + install-prefix: /usr/local + jobs: + - oran-gerrit-cmake-pc-stage + stream: + - master: + branch: master + +# promote deb/rpm from staging to release at PackageCloud.io +- project: + <<: *rmr_common + <<: *rmr_c_common + name: ric-plt-lib-rmr-c-release + # release uses sigul which requires centos + build-node: centos7-builder-1c-1g + jobs: + - gerrit-packagecloud-release-verify + - gerrit-packagecloud-release-merge + +# analyze C code and test coverage +- project: + name: ric-plt-lib-rmr-c-sonarqube + <<: *rmr_common + <<: *rmr_c_common + make-opts: test ARGS=-V + sonar-project-file: "" + sonar-properties: | + sonar.login={sonarcloud_api_token} + sonar.projectKey={sonarcloud_project_organization}_{project-name} + sonar.projectName={project-name} + sonar.organization={sonarcloud_project_organization} + sonar.build.sourceEncoding=UTF-8 + sonar.sources=src/rmr + sonar.cfamily.build-wrapper-output=$WORKSPACE/bw-output + sonar.cfamily.gcov.reportsPath=test + jobs: + - gerrit-cmake-sonarqube + +### RMR PYTHON PACKAGE ### + +- rmr_py_common: &rmr_py_common + name: rmr-py-common + # jenkins job name prefix + project-name: ric-plt-lib-rmr-py + # the pre-build-script installs RHEL packages build-node: centos7-builder-1c-1g # install prereqs pre-build-script: !include-raw-escape: ../shell/install-rpm-nng-rmr.sh + python-version: python3.6 # bindings live in a subdirectory tox-dir: src/bindings/rmr-python gerrit_trigger_file_paths: - compare-type: REG_EXP pattern: 'src/bindings/rmr-python/.*' + +# verify py changes on every branch +- project: + <<: *rmr_common + <<: *rmr_py_common + name: ric-plt-lib-rmr-py-verify stream: - - master: - branch: master + - all: + branch: '*' jobs: - gerrit-pypi-verify - - gerrit-pypi-merge: - pypi-repo: pypi-test -# Temporary workaround to avoid overriding -# gerrit_trigger_file_paths on release jobs +# build and publish distributions to test.pypi.org from master - project: <<: *rmr_common - name: ric-plt-lib-rmr-python-workaround - project-name: ric-plt-lib-rmr-python - # sigul requires centos - build-node: centos7-builder-1c-1g - # install prereqs - pre-build-script: !include-raw-escape: ../shell/install-rpm-nng-rmr.sh - tox-dir: src/bindings/rmr-python + <<: *rmr_py_common + name: ric-plt-lib-rmr-py-merge stream: - master: branch: master jobs: - - gerrit-pypi-release-verify - - gerrit-pypi-release-merge + - gerrit-pypi-merge + +# promote package from test.pypi.org to pypi.org +- project: + <<: *rmr_common + <<: *rmr_py_common + name: ric-plt-lib-rmr-py-release + jobs: + - '{project-name}-gerrit-pypi-release-jobs' + +# analyze Py code and test coverage +- project: + <<: *rmr_common + <<: *rmr_py_common + name: ric-plt-lib-rmr-py-sonarqube + sonar-project-file: "" + sonar-properties: | + sonar.login={sonarcloud_api_token} + sonar.projectKey={sonarcloud_project_organization}_{project-name} + sonar.projectName={project-name} + sonar.organization={sonarcloud_project_organization} + sonar.build.sourceEncoding=UTF-8 + sonar.sources=src/bindings/rmr-python + sonar.exclusions=setup.py,tests/*.py + sonar.python.coverage.reportPaths=coverage.xml + jobs: + - gerrit-tox-sonarqube