Release M - Build
This page describes how to build Release M version of some of the key Non-RT RIC functions.
Do you really need to build?
In general, there is no need to build the images manually.
Building from scratch is error-prone, and some development experience is required.
All images for the release are available in the O-RAN SC Docker image repository (nexus).
Please refer to the page Release M - Run in Docker for running the NONRTRIC functions for this release.
Details of the architecture can be found from the Release M page.
(Note: The actual docker image version numbers/tags may be different from the instructions below as development continues in the relevant repositories)
Project Requirements
Java 17 (make sure that JAVA_HOME environment variable points to correct Java version).
In some cases Java 21 is needed.
Docker and docker-compose (latest).
git (latest) - for downloading code repos.
Maven 3.6 and in some cases Maven 3.8.
Note: There are several build-time dependencies for ONAP Maven modules.
Your Maven build settings will need to access the ONAP Maven repos, as described on this ONAP wiki page. (A sample ONAP Maven settings file is available).
Build Code
Build NONRTRIC Docker containers
Download the following repos:
git clone "https://gerrit.o-ran-sc.org/r/nonrtric/plt/a1policymanagementservice" -b m-release --recursive git clone "https://gerrit.o-ran-sc.org/r/nonrtric/plt/rappmanager" -b m-release git clone "https://gerrit.o-ran-sc.org/r/nonrtric/plt/sme" -b l-release git clone "https://gerrit.o-ran-sc.org/r/nonrtric/plt/dmaapadapter" -b j-release git clone "https://gerrit.o-ran-sc.org/r/nonrtric/plt/informationcoordinatorservice" -b j-release git clone "https://gerrit.o-ran-sc.org/r/nonrtric" -b m-release git clone "https://gerrit.o-ran-sc.org/r/nonrtric/plt/ranpm" -b l-release
To build docker images for each of the Java-based functions go into the directory with the cloned repo of each product and run the following command:
mvn clean install -Dmaven.test.skip=true
To build a required docker image in the nonrtric repo, go into the repo run the commands below. Use the version found in the file container-tag.yaml.
cd auth-token-fetch
docker build -t o-ran-sc/nonrtric-plt-auth-token-fetch:<image-version> .
To build docker images capifcore and servicemanager functions in sme, go into the repo for and run the command below. Use the version found in the relevant file container-tag.yaml.
cd capifcore
docker build -t o-ran-sc/nonrtric-plt-capifcore:<image-version> .cd servicemanager
docker build -t o-ran-sc/nonrtric-plt-servicemanager:<image-version> .
To build docker images for ranpm, go into the repo and follow the steps below:
cd ranpm/installThe following images need to be built manually before installation of ranpm. If remote or multi node cluster is used, then an image repo should be available to push the built images to. if external repo is used, use the same repo for all built images and configure the reponame in 'helm/global-values.yaml' (The parameter value shall have a trailing '/' followed by the username)
ranpm/https-server
pm-rapp
Build for internal kubernetes, execute the script below:
./build.sh no-push
Build for remote kubernetes, execute the script below:[Externally accessible image repo(E.x: docker hub) is needed]
./build.sh <external-image-repo>
The installation of ranpm is made by a few scripts. The main part of ranpm is installed by a single script. Then, additional parts can be added on top. All installations in Kubernetes is made by helm charts. (NOTE: The install scripts should be executed in the below order only)
install-nrt.sh: Installs the main parts of the ranpm setup.
install-pm-log.sh: Installs the producer for influx db
install-pm-influx-job.sh: Sets up an alternative job to produce data stored in influx db.
install-pm-rapp.sh: Installs an rapp that subscribe and print out received data.
If the build was successful images with following name and tag shall be built. Use the command 'docker images' to view newly built images in the local docker registry.
$ docker images
o-ran-sc/nonrtric-plt-a1policymanagementservice 2.11.0
o-ran-sc/nonrtric-plt-dmaapadapter 1.4.0
o-ran-sc/nonrtric-plt-informationcoordinatorservice 1.6.1
o-ran-sc/nonrtric-plt-auth-token-fetch 1.1.1
o-ran-sc/nonrtric-plt-capifcore 1.3.1
o-ran-sc/nonrtric-plt-rappmanager 0.4.0
o-ran-sc/nonrtric-plt-servicemaanger 0.2.2
o-ran-sc/nonrtric-plt-ranpm-datafilecollector 1.2.0
o-ran-sc/nonrtric-plt-pmlog 1.1.0
o-ran-sc/nonrtric-plt-ranpm-pm-file-converter 1.2.0
o-ran-sc/nonrtric-plt-pmproducer 1.1.0 (Note: The actual docker image version numbers/tags may be different as development continues in the relevant repositories. Use the latest version numbers in the instructions below)
Build A1 simulator (previously called Near-RT RIC A1 Interface) container
Download the A1 simulator repo (defaults to master branch - the simulator supports all available A1 versions):
git clone "https://gerrit.o-ran-sc.org/r/sim/a1-interface" -b l-release
Create docker image
To create docker image A1 simulator (note that the given image name must match the name given in docker startup later):
cd a1-interface/near-rt-ric-simulator
docker build -t near-rt-ric-simulator:latest .Using the command below you can check that the name below is in the list of available images.
$ docker images
near-rt-ric-simulator latest Build NONRTRIC Control panel and gateway containers
Download the nonrtric-controlpanel repo:
git clone "https://gerrit.o-ran-sc.org/r/portal/nonrtric-controlpanel" -b i-release
Build the code and create docker images
cd nonrtric-controlpanel
cd nonrtric-gateway
mvn clean install -Dmaven.test.skip=true
docker build --build-arg JAR=nonrtric-gateway-1.3.0-SNAPSHOT.jar -t o-ran-sc/nonrtric-gateway:1.3.0-SNAPSHOT .
cd ../webapp-frontend
docker build -t o-ran-sc/nonrtric-controlpanel:2.6.0-SNAPSHOT .Using the command below you can check that the names below are in the list of available images.
$ docker images
o-ran-sc/nonrtric-gateway 1.3.0-SNAPSHOT
o-ran-sc/nonrtric-controlpanel 2.6.0-SNAPSHOT(Note: The actual docker image version numbers/tags may be different as development continues in the relevant repositories)