From d905642612e7697fac43a8ecf4c84947a9a67245 Mon Sep 17 00:00:00 2001 From: "Lott, Christopher (cl778h)" Date: Fri, 2 Aug 2019 10:50:39 -0400 Subject: [PATCH] Add base image with Alpine, C, go, python, etc. This builds and distributes libraries NNG, MDCLOG, RMR Signed-off-by: Lott, Christopher (cl778h) Change-Id: Iab28e62b96b478cc6e8e851ada4282d3ab62e2fe --- docker/README.md | 12 ++++-- docker/bldr-alpine3/Dockerfile | 77 ++++++++++++++++++++++++++++++++++ docker/bldr-alpine3/container-tag.yaml | 4 ++ jjb/ci-management/ci-docker.yaml | 10 ++--- 4 files changed, 94 insertions(+), 9 deletions(-) create mode 100755 docker/bldr-alpine3/Dockerfile create mode 100644 docker/bldr-alpine3/container-tag.yaml diff --git a/docker/README.md b/docker/README.md index c6f13ce5..2dc0912a 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,6 +1,10 @@ # CI builder images for O-RAN-SC at LF -This area contains Dockerfiles to assemble images that are used to -compile source and create binary artifacts such as Docker images for -O-RAN-SC software features. This approach replaces the practice at -LF of installing and maintaining software on Jenkins build minions. +The O-RAN-SC project runs most CI tasks in Docker instead of +maintaining build and compile tools in LF-managed Jenkins build +minions. This area contains the Dockerfiles to assemble images that +are used as the first stage in a multi-stage Docker build. These +images have large build and compile tools like C, C++, Golang, cmake, +ninja, etc. These images are used to compile source and create binary +artifacts of O-RAN-SC software features, which are then wrapped in +minimal docker images for use. diff --git a/docker/bldr-alpine3/Dockerfile b/docker/bldr-alpine3/Dockerfile new file mode 100755 index 00000000..f37bb27e --- /dev/null +++ b/docker/bldr-alpine3/Dockerfile @@ -0,0 +1,77 @@ +# O-RAN-SC +# +# Copyright (C) 2019 AT&T Intellectual Property and Nokia +# +# 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. + +# Builder image Alpine 3.9 +# gcc/g++ v 8 +# golang v 1.12 +# python 3.7 +# nng library (libnng.so, libnng.so.X.X.X; see below for pinned version) +# Includes RIC libraries as a distribution path because +# PackageCloud does not support Alpine .apk (yet): +# mdc log library (libmdclog.so, libmdbclog.so.X.X.X; see below for pinned version) +# rmr library (librmr_nng.so, libmdclog.so..X.X.X; see below for pinned version) +# How to get a library file from this Docker base image: +# COPY --from=nexus3.o-ran-sc.org:10004/bldr-alpine3:1-a3.9 /usr/local/lib64/libnng.so.X.X.X /usr/local/lib64 +# COPY --from=nexus3.o-ran-sc.org:10004/bldr-alpine3:1-a3.9 /usr/local/lib/libmdclog.so.X.X.X /usr/local/lib +# COPY --from=nexus3.o-ran-sc.org:10004/bldr-alpine3:1-a3.9 /usr/local/lib/librmr_nng.so.X.X.X /usr/local/lib + +FROM python:3.7-alpine +RUN apk update && apk add \ + autoconf \ + automake \ + build-base \ + cmake \ + libtool \ + ninja \ + pkgconfig \ + python-dev \ + git \ + go + +# the autoconf-archive in alpine's edge repos is too new +# for our purposes, so we'll use one from the source. +RUN cd /tmp \ + && git clone --branch v2015.09.25 git://git.sv.gnu.org/autoconf-archive.git \ + && cp /tmp/autoconf-archive/m4/* /usr/share/aclocal \ + && rm -rf /tmp/autoconf-archive + +# NNG, version is pinned +RUN cd /tmp \ + && git clone --branch v1.1.1 https://github.com/nanomsg/nng.git \ + && cd nng \ + && mkdir build \ + && cd build \ + && cmake -DBUILD_SHARED_LIBS=1 -G Ninja .. \ + && ninja \ + && ninja install + +# MCDLOG, version is pinned +RUN cd /tmp \ + && git clone --branch v0.0.4 https://gerrit.o-ran-sc.org/r/com/log \ + && cd log \ + && ./autogen.sh \ + && ./configure \ + && make \ + && make install + +# RMR, version is pinned +RUN cd /tmp \ + && git clone --branch 1.0.36 https://gerrit.o-ran-sc.org/r/ric-plt/lib/rmr \ + && cd rmr \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make install diff --git a/docker/bldr-alpine3/container-tag.yaml b/docker/bldr-alpine3/container-tag.yaml new file mode 100644 index 00000000..414e8397 --- /dev/null +++ b/docker/bldr-alpine3/container-tag.yaml @@ -0,0 +1,4 @@ +# Not feasible to show all the software versions +# here so just use a counter plus the base image +--- +tag: 1-a3.9 diff --git a/jjb/ci-management/ci-docker.yaml b/jjb/ci-management/ci-docker.yaml index ad115971..9c1a72a4 100644 --- a/jjb/ci-management/ci-docker.yaml +++ b/jjb/ci-management/ci-docker.yaml @@ -22,13 +22,13 @@ - project: <<: *ci_docker_common - name: bldr-alpine-python + name: bldr-alpine3 project-name: '{project}-{name}' docker-name: '{name}' docker-root: 'docker/{name}' gerrit_trigger_file_paths: - compare-type: REG_EXP - pattern: 'docker/{name}/.*' + pattern: '{docker-root}/.*' jobs: - '{project-name}-gerrit-docker-jobs' @@ -40,7 +40,7 @@ docker-root: 'docker/{name}' gerrit_trigger_file_paths: - compare-type: REG_EXP - pattern: 'docker/{name}/.*' + pattern: '{docker-root}/.*' jobs: - '{project-name}-gerrit-docker-jobs' @@ -52,7 +52,7 @@ docker-root: 'docker/{name}' gerrit_trigger_file_paths: - compare-type: REG_EXP - pattern: 'docker/{name}/.*' + pattern: '{docker-root}/.*' jobs: - '{project-name}-gerrit-docker-jobs' @@ -64,6 +64,6 @@ docker-root: 'docker/{name}' gerrit_trigger_file_paths: - compare-type: REG_EXP - pattern: 'docker/{name}/.*' + pattern: '{docker-root}/.*' jobs: - '{project-name}-gerrit-docker-jobs' -- 2.16.6