From 6fbb77d65a29e41272d7df3ab0cad07bd16de4a9 Mon Sep 17 00:00:00 2001 From: He Weiwei Date: Thu, 10 Oct 2019 15:29:50 +0800 Subject: [PATCH] build(portal): npm registry configurable and build cache support (#9356) 1. Introduce NPM_REGISTRY in Makefile to support npm registry configuration when build portal image. 2. Install npm pkgs before copy portal src so that build cache works for npm install in portal image. Signed-off-by: He Weiwei --- Makefile | 6 ++++-- make/photon/Makefile | 20 ++++++++++---------- make/photon/portal/Dockerfile | 21 +++++++++++++-------- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 592a179d27..40191d31db 100644 --- a/Makefile +++ b/Makefile @@ -81,6 +81,7 @@ CLAIRFLAG=false HTTPPROXY= BUILDBIN=false MIGRATORFLAG=false +NPM_REGISTRY=https://registry.npmjs.org # enable/disable chart repo supporting CHARTFLAG=false @@ -304,7 +305,8 @@ build: -e REGISTRYVERSION=$(REGISTRYVERSION) -e NGINXVERSION=$(NGINXVERSION) -e NOTARYVERSION=$(NOTARYVERSION) -e NOTARYMIGRATEVERSION=$(NOTARYMIGRATEVERSION) \ -e CLAIRVERSION=$(CLAIRVERSION) -e CLAIRDBVERSION=$(CLAIRDBVERSION) -e VERSIONTAG=$(VERSIONTAG) \ -e BUILDBIN=$(BUILDBIN) -e REDISVERSION=$(REDISVERSION) -e MIGRATORVERSION=$(MIGRATORVERSION) \ - -e CHARTMUSEUMVERSION=$(CHARTMUSEUMVERSION) -e DOCKERIMAGENAME_CHART_SERVER=$(DOCKERIMAGENAME_CHART_SERVER) + -e CHARTMUSEUMVERSION=$(CHARTMUSEUMVERSION) -e DOCKERIMAGENAME_CHART_SERVER=$(DOCKERIMAGENAME_CHART_SERVER) \ + -e NPM_REGISTRY=$(NPM_REGISTRY) install: compile ui_version build prepare start @@ -431,7 +433,7 @@ swagger_client: mkdir harborclient java -jar swagger-codegen-cli.jar generate -i docs/swagger.yaml -l python -o harborclient cd harborclient; python ./setup.py install - pip install docker -q + pip install docker -q pip freeze cleanbinary: diff --git a/make/photon/Makefile b/make/photon/Makefile index 8481fd7a7d..76dde92de3 100644 --- a/make/photon/Makefile +++ b/make/photon/Makefile @@ -1,5 +1,5 @@ # Makefile for a harbor project -# +# # Targets: # # build: build harbor photon images @@ -109,20 +109,20 @@ _build_db: _build_portal: @echo "building portal container for photon..." - $(DOCKERBUILD) -f $(DOCKERFILEPATH_PORTAL)/$(DOCKERFILENAME_PORTAL) -t $(DOCKERIMAGENAME_PORTAL):$(VERSIONTAG) . + $(DOCKERBUILD) --build-arg npm_registry=$(NPM_REGISTRY) -f $(DOCKERFILEPATH_PORTAL)/$(DOCKERFILENAME_PORTAL) -t $(DOCKERIMAGENAME_PORTAL):$(VERSIONTAG) . @echo "Done." -_build_core: +_build_core: @echo "building core container for photon..." @$(DOCKERBUILD) -f $(DOCKERFILEPATH_CORE)/$(DOCKERFILENAME_CORE) -t $(DOCKERIMAGENAME_CORE):$(VERSIONTAG) . @echo "Done." - -_build_jobservice: + +_build_jobservice: @echo "building jobservice container for photon..." @$(DOCKERBUILD) -f $(DOCKERFILEPATH_JOBSERVICE)/$(DOCKERFILENAME_JOBSERVICE) -t $(DOCKERIMAGENAME_JOBSERVICE):$(VERSIONTAG) . @echo "Done." -_build_log: +_build_log: @echo "building log container for photon..." $(DOCKERBUILD) -f $(DOCKERFILEPATH_LOG)/$(DOCKERFILENAME_LOG) -t $(DOCKERIMAGENAME_LOG):$(VERSIONTAG) . @echo "Done." @@ -154,7 +154,7 @@ _build_chart_server: rm -rf $(DOCKERFILEPATH_CHART_SERVER)/binary; \ echo "Done." ; \ fi - + _build_nginx: @echo "building nginx container for photon..." @$(DOCKERBUILD) -f $(DOCKERFILEPATH_NGINX)/$(DOCKERFILENAME_NGINX) -t $(DOCKERIMAGENAME_NGINX):$(NGINXVERSION) . @@ -175,7 +175,7 @@ _build_notary: rm -rf $(DOCKERFILEPATH_NOTARY)/binary; \ echo "Done."; \ fi - + _build_registry: @if [ "$(BUILDBIN)" != "true" ] ; then \ rm -rf $(DOCKERFILEPATH_REG)/binary && mkdir -p $(DOCKERFILEPATH_REG)/binary && \ @@ -187,7 +187,7 @@ _build_registry: @chmod 655 $(DOCKERFILEPATH_REG)/binary/registry && $(DOCKERBUILD) -f $(DOCKERFILEPATH_REG)/$(DOCKERFILENAME_REG) -t $(DOCKERIMAGENAME_REG):$(REGISTRYVERSION)-$(VERSIONTAG) . @echo "Done." -_build_registryctl: +_build_registryctl: @echo "building registry controller for photon..." @$(DOCKERBUILD) -f $(DOCKERFILEPATH_REGISTRYCTL)/$(DOCKERFILENAME_REGISTRYCTL) -t $(DOCKERIMAGENAME_REGISTRYCTL):$(VERSIONTAG) . @rm -rf $(DOCKERFILEPATH_REG)/binary @@ -217,7 +217,7 @@ cleanimage: - $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_CORE):$(VERSIONTAG) - $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_JOBSERVICE):$(VERSIONTAG) - $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_LOG):$(VERSIONTAG) - + .PHONY: clean clean: cleanimage diff --git a/make/photon/portal/Dockerfile b/make/photon/portal/Dockerfile index 004d0113a8..9dc834413b 100644 --- a/make/photon/portal/Dockerfile +++ b/make/photon/portal/Dockerfile @@ -1,18 +1,23 @@ FROM node:10.15.0 as nodeportal -COPY src/portal /portal_src -COPY ./docs/swagger.yaml /portal_src -COPY ./LICENSE /portal_src - WORKDIR /build_dir +ARG npm_registry=https://registry.npmjs.org +ENV NPM_CONFIG_REGISTRY=${npm_registry} -RUN cp -r /portal_src/* /build_dir \ - && ls -la \ - && apt-get update \ +COPY src/portal/package.json /build_dir +COPY src/portal/package-lock.json /build_dir +COPY ./docs/swagger.yaml /build_dir + +RUN apt-get update \ && apt-get install -y --no-install-recommends python-yaml=3.12-1 \ && python -c 'import sys, yaml, json; y=yaml.load(sys.stdin.read()); print json.dumps(y)' < swagger.yaml > swagger.json \ - && npm install \ + && npm install + +COPY ./LICENSE /build_dir +COPY src/portal /build_dir + +RUN ls -la \ && npm run build_lib \ && npm run link_lib \ && node --max_old_space_size=8192 'node_modules/@angular/cli/bin/ng' build --prod