From 4cc62d5b47c88e7e5a5847d3af328c7a0054d6d0 Mon Sep 17 00:00:00 2001 From: Pingping Lin Date: Thu, 15 Apr 2021 21:26:33 -0500 Subject: [PATCH] create makefiles and dockerfile for building UI image --- Dockerfile | 46 ++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ Makefile_docker | 45 +++++++++++++++++++++++++++++++++++++++++++++ VERSION | 1 + 4 files changed, 140 insertions(+) create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 Makefile_docker create mode 100644 VERSION diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..13e13b74 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,46 @@ +# Copyright 2019-present Open Networking Foundation +# +# SPDX-License-Identifier: Apache-2.0 +# + +FROM golang:1.14.4-stretch AS builder + +LABEL maintainer="ONF " + +#RUN apt remove cmdtest yarn +RUN apt-get update +RUN apt-get -y install apt-transport-https ca-certificates +RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg > pubkey.gpg +RUN apt-key add pubkey.gpg +RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - +RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list +RUN apt-get update +RUN apt-get -y install gcc cmake autoconf libtool pkg-config libmnl-dev libyaml-dev nodejs yarn +RUN apt-get clean + + +RUN cd $GOPATH/src && mkdir -p webconsole +COPY . $GOPATH/src/webconsole + +RUN cd $GOPATH/src/webconsole \ + && make all \ + && CGO_ENABLED=0 go build -a -installsuffix nocgo -o webconsole -x server.go + +FROM alpine:3.8 as webui + +LABEL description="ONF open source 5G Core Network" \ + version="Stage 3" + +ARG DEBUG_TOOLS + +# Install debug tools ~ 100MB (if DEBUG_TOOLS is set to true) +RUN apk update +RUN apk add -U vim strace net-tools curl netcat-openbsd bind-tools + +# Set working dir +WORKDIR /free5gc +RUN mkdir -p webconsole/ + +# Copy executable and default certs +COPY --from=builder /go/src/webconsole/webconsole ./webconsole +COPY --from=builder /go/src/webconsole/public ./webconsole/public diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..37ee6958 --- /dev/null +++ b/Makefile @@ -0,0 +1,48 @@ +# Copyright 2019-present Open Networking Foundation +# +# SPDX-License-Identifier: Apache-2.0 +# +# +GO_BIN_PATH = bin +GO_SRC_PATH = ./ +C_BUILD_PATH = build +ROOT_PATH = $(shell pwd) + +WEBCONSOLE = webconsole + +WEBCONSOLE_GO_FILES = $(shell find ./ -name "*.go" ! -name "*_test.go") + +VERSION = $(shell git describe --tags) +BUILD_TIME = $(shell date -u +"%Y-%m-%dT%H:%M:%SZ") +WEBCONSOLE_COMMIT_HASH = $(shell git submodule status | grep $(WEBCONSOLE) | awk '{print $$(1)}' | cut -c1-8) +WEBCONSOLE_COMMIT_TIME = $(shell git log --pretty="%ai" -1 | awk '{time=$$(1)"T"$$(2)"Z"; print time}') +WEBCONSOLE_LDFLAGS = -X github.com/free5gc/version.VERSION=$(VERSION) \ + -X github.com/free5gc/version.BUILD_TIME=$(BUILD_TIME) \ + -X github.com/free5gc/version.COMMIT_HASH=$(WEBCONSOLE_COMMIT_HASH) \ + -X github.com/free5gc/version.COMMIT_TIME=$(WEBCONSOLE_COMMIT_TIME) + +.PHONY: $(NF) clean + +.DEFAULT_GOAL: nfs + +all: $(WEBCONSOLE) + +$(WEBCONSOLE): $(GO_BIN_PATH)/$(WEBCONSOLE) + +$(GO_BIN_PATH)/$(WEBCONSOLE): server.go $(WEBCONSOLE_GO_FILES) + @echo "Start building $(@F)...." + cd frontend && \ + yarn install && \ + yarn build && \ + rm -rf ../public && \ + cp -R build ../public +# cd $(WEBCONSOLE) && \ +# go build -ldflags "$(WEBCONSOLE_LDFLAGS)" -o $(ROOT_PATH)/$@ ./server.go +# + + +vpath %.go $(addprefix $(GO_SRC_PATH)/, $(GO_NF)) + +clean: + rm -rf $(WEBCONSOLE)/$(GO_BIN_PATH)/$(WEBCONSOLE) + diff --git a/Makefile_docker b/Makefile_docker new file mode 100644 index 00000000..3c696a8f --- /dev/null +++ b/Makefile_docker @@ -0,0 +1,45 @@ +# Copyright 2019-present Open Networking Foundation +# +# SPDX-License-Identifier: Apache-2.0 +# + +PROJECT_NAME := free5GC +VERSION ?= $(shell cat ./VERSION) + +## Docker related +DOCKER_REGISTRY ?= +DOCKER_REPOSITORY ?= +DOCKER_TAG ?= ${VERSION} +DOCKER_IMAGENAME := ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}${PROJECT_NAME}:${DOCKER_TAG} +DOCKER_BUILDKIT ?= 1 +DOCKER_BUILD_ARGS ?= + +## 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") + +DOCKER_TARGETS ?= builder webui + +# https://docs.docker.com/engine/reference/commandline/build/#specifying-target-build-stage---target +docker-build: + for target in $(DOCKER_TARGETS); do \ + DOCKER_BUILDKIT=$(DOCKER_BUILDKIT) docker build $(DOCKER_BUILD_ARGS) \ + --target $$target \ + --tag ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}5gc-$$target:${DOCKER_TAG} \ + --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}" \ + . \ + || exit 1; \ + done + +docker-push: + for target in $(DOCKER_TARGETS); do \ + docker push ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}5gc-$$target:${DOCKER_TAG}; \ + done + +.PHONY: docker-build docker-push diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..c0ab82c2 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.0.1-dev