From 419d851344e85fffeeb9a65726cd02e97dbfe7df Mon Sep 17 00:00:00 2001 From: "Lott, Christopher (cl778h)" Date: Wed, 5 Jun 2019 15:51:17 -0400 Subject: [PATCH] Add CI-based build of rtmgr using multiple stages Created single Dockerfile based on existing files. Added tag-definition file that is read by the Jenkins job that builds a Docker image. Upgrade to go version 1.12. Un-ignore and add .gitreview file. Signed-off-by: Lott, Christopher (cl778h) Change-Id: Ic1c15844a83b36e59bd94f8ea5c424e41177908d --- .gitattributes | 25 +++++++++++++++++++++++++ .gitignore | 1 - .gitreview | 5 +++++ build/binary/Dockerfile => Dockerfile | 28 +++++++++++++++++----------- build/binary/compile.sh | 31 ------------------------------- build/container/Dockerfile | 29 ----------------------------- container-tag.yaml | 5 +++++ 7 files changed, 52 insertions(+), 72 deletions(-) create mode 100644 .gitattributes create mode 100644 .gitreview rename build/binary/Dockerfile => Dockerfile (61%) delete mode 100755 build/binary/compile.sh delete mode 100644 build/container/Dockerfile create mode 100644 container-tag.yaml diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..d4628c1 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,25 @@ +# https://help.github.com/articles/dealing-with-line-endings/ + +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Explicitly declare text files you want to always be normalized +# and converted to native line endings on checkout. +*.c text diff=cpp +*.cpp text diff=cpp +*.css text +*.go text diff=golang +*.htm text diff=html +*.html text diff=html +*.java text diff=java +*.js text +*.jsp text +*.less text +*.properties text +*.py text diff=python +*.sql text +*.xml text + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary diff --git a/.gitignore b/.gitignore index 70b84df..e69de29 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +0,0 @@ -.gitreview diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..a7f2fae --- /dev/null +++ b/.gitreview @@ -0,0 +1,5 @@ +[gerrit] +host=gerrit.o-ran-sc.org +port=29418 +project=ric-plt/rtmgr +defaultbranch=master diff --git a/build/binary/Dockerfile b/Dockerfile similarity index 61% rename from build/binary/Dockerfile rename to Dockerfile index 7930f00..10cdd1c 100644 --- a/build/binary/Dockerfile +++ b/Dockerfile @@ -1,4 +1,3 @@ -# #================================================================================== # Copyright (c) 2019 AT&T Intellectual Property. # Copyright (c) 2019 Nokia @@ -15,18 +14,25 @@ # See the License for the specific language governing permissions and # limitations under the License. #================================================================================== -# -# -# Abstract: Builds a container to compile Routing Manager's code -# Date: 29 March 2019 -# -FROM golang:1.11 -ENV GOPATH /opt +# The CI system creates and publishes the rtmgr Docker image +# from the last step in this multi-stage build and applies +# a Docker tag from the string in file container-tag.yaml +FROM golang:1.12 as rtmgrbuild +ENV GOPATH /opt RUN apt-get update \ && apt-get install golang-glide +COPY . /opt +RUN mkdir -p $GOPATH/bin \ + && ln -s -f $GOPATH/pkg $GOPATH/src \ + && cd $GOPATH/src \ + && glide install --strip-vendor \ + && cd $GOPATH/cmd \ + && go build rtmgr.go \ + && mv $GOPATH/cmd/rtmgr $GOPATH/bin -COPY compile.sh / - -ENTRYPOINT /compile.sh +FROM ubuntu:16.04 +COPY --from=rtmgrbuild /opt/bin/rtmgr / +RUN mkdir /db && touch /db/rt.json +CMD /rtmgr diff --git a/build/binary/compile.sh b/build/binary/compile.sh deleted file mode 100755 index 35d8640..0000000 --- a/build/binary/compile.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -e -# -#================================================================================== -# Copyright (c) 2019 AT&T Intellectual Property. -# Copyright (c) 2019 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. -#================================================================================== -# -# -# Mnemonic: compile.sh -# Abstract: Compiles the rtmgr source -# Date: 19 March 2019 -# -mkdir -p $GOPATH/bin -ln -s -f $GOPATH/pkg $GOPATH/src -cd $GOPATH/src -glide install --strip-vendor -cd $GOPATH/cmd -go build rtmgr.go -mv $GOPATH/cmd/rtmgr $GOPATH/bin diff --git a/build/container/Dockerfile b/build/container/Dockerfile deleted file mode 100644 index 98582b9..0000000 --- a/build/container/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -# -#================================================================================== -# Copyright (c) 2019 AT&T Intellectual Property. -# Copyright (c) 2019 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. -#================================================================================== -# -# -# Abstract: Builds the Routing Manager's production ready container image -# Date: 29 March 2019 -# - -FROM ubuntu - -COPY rtmgr / -COPY run_rtmgr.sh / -RUN mkdir /db \ - && touch /db/rt.json diff --git a/container-tag.yaml b/container-tag.yaml new file mode 100644 index 0000000..a13d479 --- /dev/null +++ b/container-tag.yaml @@ -0,0 +1,5 @@ +# The Jenkins job requires a tag to build the Docker image. +# By default this file is in the docker build directory, +# but the location can configured in the JJB template. +--- +tag: 0.1.0 -- 2.16.6