COMAC-141 Add Dockerfile and Makefile for OAI images
Change-Id: Ie57d26dd05c3b7a36d82e536a08a33ef4d2920d5
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..f0418e6
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,5 @@
+[gerrit]
+host=gerrit.opencord.org
+port=29418
+project=openairinterface.git
+defaultremote=origin
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..4e91942
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,82 @@
+#
+# Copyright 2019-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM ubuntu:16.04 AS base-builder
+RUN apt-get update && apt-get install -y \
+ sudo \
+ linux-headers-`uname -r` \
+ vim-common \
+ git \
+ build-essential \
+ cmake \
+ && rm -rf /var/lib/apt/lists/*
+RUN git clone https://gitlab.eurecom.fr/oai/openairinterface5g/ /openairinterface5g
+WORKDIR /openairinterface5g
+ENV USER=root
+RUN git checkout -f v1.0.0 && \
+ /bin/bash -c "source oaienv" && \
+ cd cmake_targets && \
+ ./build_oai -I
+
+FROM base-builder AS enb-builder
+WORKDIR /openairinterface5g
+ENV USER=root
+RUN /bin/bash -c "source oaienv" && \
+ cd cmake_targets && \
+ ./build_oai --eNB -t ETHERNET -c
+
+FROM ubuntu:16.04 AS lte-softmodem
+RUN apt-get update && apt-get install -y \
+ libssl1.0.0 \
+ libnettle6 \
+ libsctp1 \
+ libforms2 \
+ libprotobuf-c1 \
+ libyaml-0-2 \
+ libconfig9 \
+ dnsutils \
+ iproute2 \
+ iputils-ping \
+ && rm -rf /var/lib/apt/lists/*
+WORKDIR /openairinterface5g/cmake_targets
+COPY --from=enb-builder /openairinterface5g/cmake_targets/ .
+
+FROM base-builder AS ue-builder
+WORKDIR /openairinterface5g
+ENV USER=root
+RUN /bin/bash -c "source oaienv" && \
+ cd cmake_targets && \
+ ./build_oai --UE -t ETHERNET -c
+
+FROM ubuntu:16.04 AS lte-uesoftmodem
+RUN apt-get update && apt-get install -y \
+ libssl1.0.0 \
+ libnettle6 \
+ libsctp1 \
+ libforms2 \
+ libconfig9 \
+ libblas3 \
+ liblapacke \
+ sudo \
+ dnsutils \
+ iproute2 \
+ iputils-ping \
+ net-tools \
+ && rm -rf /var/lib/apt/lists/*
+WORKDIR /openairinterface5g/cmake_targets
+COPY --from=ue-builder /openairinterface5g/cmake_targets .
+COPY --from=ue-builder /openairinterface5g/targets/bin/nvram .
+COPY --from=ue-builder /openairinterface5g/targets/bin/usim .
+COPY --from=ue-builder /openairinterface5g/targets ../targets
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..11e9f1d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,61 @@
+#
+# Copyright 2019-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+VERSION ?= $(shell cat ./VERSION)
+ENB_NAME ?= lte-softmodem
+UE_NAME ?= lte-uesoftmodem
+
+DOCKER_TAG ?= ${VERSION}
+DOCKER_REGISTRY ?=
+DOCKER_REPOSITORY ?=
+DOCKER_BUILD_ARGS ?=
+ENB_IMAGENAME ?= ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}${ENB_NAME}:${DOCKER_TAG}
+UE_IMAGENAME ?= ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}${UE_NAME}:${DOCKER_TAG}
+
+## Docker labels. Only set ref and commit date if committed
+DOCKER_LABEL_VCS_URL ?= $(shell git remote get-url $(shell git remote))
+DOCKER_LABEL_VCS_REF ?= $(shell git diff-index --quiet HEAD -- && git rev-parse HEAD || echo "unknown")
+DOCKER_LABEL_COMMIT_DATE ?= $(shell git diff-index --quiet HEAD -- && git show -s --format=%cd --date=iso-strict HEAD || echo "unknown" )
+DOCKER_LABEL_BUILD_DATE ?= $(shell date -u "+%Y-%m-%dT%H:%M:%SZ")
+
+# https://docs.docker.com/engine/reference/commandline/build/#specifying-target-build-stage---target
+docker-build:
+ docker build $(DOCKER_BUILD_ARGS) \
+ --target ${ENB_NAME} \
+ --tag ${ENB_IMAGENAME} \
+ --build-arg org_label_schema_version="${VERSION}" \
+ --build-arg org_label_schema_vcs_url="${DOCKER_LABEL_VCS_URL}" \
+ --build-arg org_label_schema_vcs_ref="${DOCKER_LABEL_VCS_REF}" \
+ --build-arg org_label_schema_build_date="${DOCKER_LABEL_BUILD_DATE}" \
+ --build-arg org_opencord_vcs_commit_date="${DOCKER_LABEL_COMMIT_DATE}" \
+ .
+ docker build $(DOCKER_BUILD_ARGS) \
+ --target ${UE_NAME} \
+ --tag ${UE_IMAGENAME} \
+ --build-arg org_label_schema_version="${VERSION}" \
+ --build-arg org_label_schema_vcs_url="${DOCKER_LABEL_VCS_URL}" \
+ --build-arg org_label_schema_vcs_ref="${DOCKER_LABEL_VCS_REF}" \
+ --build-arg org_label_schema_build_date="${DOCKER_LABEL_BUILD_DATE}" \
+ --build-arg org_opencord_vcs_commit_date="${DOCKER_LABEL_COMMIT_DATE}" \
+ .
+
+docker-push:
+ docker push ${ENB_IMAGENAME}
+ docker push ${UE_IMAGENAME}
+
+test: docker-build
+
+.PHONY: docker-build docker-push test
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ff460a1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# openairinterface
+
+This repository includes Dockerfile that incorporates and packages openairinteface eNB and UE release v1.0.0. Note that the images are set to be built with ETHERNET as transport protocol and tested with L2 nFAPI simulator setup only. Related Helm chart and deployment script can be found https://github.com/opencord/helm-charts and https://github.com/opencord/automation-tools.
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..3eefcb9
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+1.0.0