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=60c2f2b9feb5bd0bc20f6fa413c9cfe82c301d58;hb=9e77835edae93be0f4e22e21a77dfac78699c0c9;hp=a27fb76cf57ca3e2eca718a5e37a93d18540583f;hpb=1fbe5cad5f5b3ca28ab0c97d103b6f5f469a1a4b;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 a27fb76c..60c2f2b9 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 @@ -5,48 +8,159 @@ views: - project-view -- rmr_docker_common: &rmr_docker_common - # values apply to all RIC docker-build projects. - # factored out in case rmr needs multiple projects. - # use a specific name to prevent reuse attempts - # because anchors don't cross document boundaries. - name: rmr-docker-common - build-node: ubuntu1804-docker-4c-4g - # pull from the public mirror + releases registry - container-public-registry: nexus3.o-ran-sc.org:10001 - # push to the staging repo because all builds are RCs - container-push-registry: nexus3.o-ran-sc.org:10004 - stream: - - master: - branch: master - - project: - name: ric-plt-lib-rmr + name: ric-plt-lib-rmr-info + project: ric-plt/lib/rmr + project-name: ric-plt-lib-rmr + build-node: centos7-builder-1c-1g + jobs: + - gerrit-info-yaml-verify + +- rmr_common: &rmr_common + name: rmr-common # git repo project: ric-plt/lib/rmr + # maven settings file has credentials to archive artifacts + mvn-settings: ric-plt-lib-rmr-settings + +### RMR C LIBRARY ### + +- rmr_c_common: &rmr_c_common + name: rmr-c-common # jenkins job name prefix - project-name: '{name}' - # use host network to clone from our gerrit - docker-build-args: '--network=host -f ci/Dockerfile' - # image name + project-name: ric-plt-lib-rmr-c + # test scripts depend on this name + build-dir: $WORKSPACE/build + # use an ubuntu for its modern compiler + build-node: ubuntu1804-builder-2c-2g + # verify and sonar use cmake + cmake-opts: -DDEV_PKG=1 + make-opts: install test ARGS=-V + # exclude irrelevant changes + gerrit_trigger_file_paths: + - compare-type: REG_EXP + pattern: '^((?!src/bindings|\/COMMIT_MSG).)*$' + +# verify c changes on every branch +- project: + name: ric-plt-lib-rmr-c-verify + <<: *rmr_common + <<: *rmr_c_common + jobs: + - gerrit-cmake-verify + stream: + - all: + branch: '*' + +# build deb/rpm using Docker and publish to PackageCloud.io +# on merge to master branch +- project: + <<: *rmr_common + <<: *rmr_c_common + name: ric-plt-lib-rmr-c-package + # need docker + build-node: ubuntu1804-docker-4c-4g + # image is not pushed, use simple name and tag docker-name: '{name}' - # image tag; use a fixed value container-tag-method: latest - # maven settings file has docker credentials - mvn-settings: ric-plt-lib-rmr-settings - # copy packages to Jenkins filesystem - post_docker_build_script: !include-raw-escape: - - ../shell/export-packages.sh + # use host network for network resources + docker-build-args: '--network=host -f ci/Dockerfile' + jobs: + - oran-gerrit-docker-ci-pc-merge + 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: - # TODO: define a merge template to push package, not image - - gerrit-docker-verify - <<: *rmr_docker_common + - gerrit-packagecloud-release-verify + - gerrit-packagecloud-release-merge +# analyze C code and test coverage - project: - name: ric-plt-lib-rmr-info - project: ric-plt/lib/rmr - project-name: ric-plt-lib-rmr + name: ric-plt-lib-rmr-c-sonar + <<: *rmr_common + <<: *rmr_c_common + 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: + - all: + branch: '*' jobs: - - gerrit-info-yaml-verify + - gerrit-pypi-verify + +# build and publish distributions to test.pypi.org from master +- project: + <<: *rmr_common + <<: *rmr_py_common + name: ric-plt-lib-rmr-py-merge + stream: + - master: + branch: master + jobs: + - 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