diff --git a/Makefile b/Makefile index 974118b9c..cd4fd9b98 100644 --- a/Makefile +++ b/Makefile @@ -4,18 +4,17 @@ # # all: prepare env, compile binarys, build images and install images # prepare: prepare env -# compile: compile ui and jobservice code +# compile: compile adminserver, ui and jobservice code # # compile_golangimage: # compile from golang image # for example: make compile_golangimage -e GOBUILDIMAGE= \ # golang:1.7.3 -# compile_ui, compile_jobservice: compile specific binary +# compile_adminserver, compile_ui, compile_jobservice: compile specific binary # # build: build Harbor docker images (defuault: build_photon) # for example: make build -e BASEIMAGE=photon -# build_photon: build Harbor docker images from photon bsaeimage -# build_ubuntu: build Harbor docker images from ubuntu baseimage +# build_photon: build Harbor docker images from photon baseimage # # install: include compile binarys, build images, prepare specific \ # version composefile and startup Harbor instance @@ -46,7 +45,7 @@ # # clean: remove binary, Harbor images, specific version docker-compose \ # file, specific version tag and online/offline install package -# cleanbinary: remove ui and jobservice binary +# cleanbinary: remove adminserver, ui and jobservice binary # cleanimage: remove Harbor images # cleandockercomposefile: # remove specific version docker-compose @@ -100,14 +99,19 @@ GOBUILDIMAGE=reg.mydomain.com/library/harborgo[:tag] GOBUILDPATH=$(GOBASEPATH)/harbor GOIMAGEBUILDCMD=/usr/local/go/bin/go GOIMAGEBUILD=$(GOIMAGEBUILDCMD) build +GOBUILDPATH_ADMINSERVER=$(GOBUILDPATH)/src/adminserver GOBUILDPATH_UI=$(GOBUILDPATH)/src/ui GOBUILDPATH_JOBSERVICE=$(GOBUILDPATH)/src/jobservice GOBUILDMAKEPATH=$(GOBUILDPATH)/make +GOBUILDMAKEPATH_ADMINSERVER=$(GOBUILDMAKEPATH)/dev/adminserver GOBUILDMAKEPATH_UI=$(GOBUILDMAKEPATH)/dev/ui GOBUILDMAKEPATH_JOBSERVICE=$(GOBUILDMAKEPATH)/dev/jobservice GOLANGDOCKERFILENAME=Dockerfile.golang # binary +ADMINSERVERSOURCECODE=$(SRCPATH)/adminserver +ADMINSERVERBINARYPATH=$(MAKEDEVPATH)/adminserver +ADMINSERVERBINARYNAME=harbor_adminserver UISOURCECODE=$(SRCPATH)/ui UIBINARYPATH=$(MAKEDEVPATH)/ui UIBINARYNAME=harbor_ui @@ -125,7 +129,6 @@ CONFIGFILE=harbor.cfg # makefile MAKEFILEPATH_PHOTON=$(MAKEPATH)/photon -MAKEFILEPATH_UBUNTU=$(MAKEPATH)/ubuntu # common dockerfile DOCKERFILEPATH_COMMON=$(MAKEPATH)/common @@ -133,6 +136,7 @@ DOCKERFILEPATH_DB=$(DOCKERFILEPATH_COMMON)/db DOCKERFILENAME_DB=Dockerfile # docker image name +DOCKERIMAGENAME_ADMINSERVER=vmware/harbor-adminserver DOCKERIMAGENAME_UI=vmware/harbor-ui DOCKERIMAGENAME_JOBSERVICE=vmware/harbor-jobservice DOCKERIMAGENAME_LOG=vmware/harbor-log @@ -177,6 +181,11 @@ version: check_environment: @$(MAKEPATH)/$(CHECKENVCMD) +compile_adminserver: + @echo "compiling binary for adminserver..." + @$(GOBUILD) -o $(ADMINSERVERBINARYPATH)/$(ADMINSERVERBINARYNAME) $(ADMINSERVERSOURCECODE) + @echo "Done." + compile_ui: @echo "compiling binary for ui..." @$(GOBUILD) -o $(UIBINARYPATH)/$(UIBINARYNAME) $(UISOURCECODE) @@ -187,9 +196,15 @@ compile_jobservice: @$(GOBUILD) -o $(JOBSERVICEBINARYPATH)/$(JOBSERVICEBINARYNAME) $(JOBSERVICESOURCECODE) @echo "Done." -compile_normal: compile_ui compile_jobservice +compile_normal: compile_adminserver compile_ui compile_jobservice compile_golangimage: + @echo "compiling binary for adminserver (golang image)..." + @echo $(GOBASEPATH) + @echo $(GOBUILDPATH) + @$(DOCKERCMD) run --rm -v $(BUILDPATH):$(GOBUILDPATH) -w $(GOBUILDPATH_ADMINSERVER) $(GOBUILDIMAGE) $(GOIMAGEBUILD) -v -o $(GOBUILDMAKEPATH_ADMINSERVER)/$(ADMINSERVERBINARYNAME) + @echo "Done." + @echo "compiling binary for ui (golang image)..." @echo $(GOBASEPATH) @echo $(GOBUILDPATH) @@ -214,9 +229,6 @@ build_common: version build_photon: build_common make -f $(MAKEFILEPATH_PHOTON)/Makefile build -e DEVFLAG=$(DEVFLAG) -build_ubuntu: build_common - make -f $(MAKEFILEPATH_UBUNTU)/Makefile build -e DEVFLAG=$(DEVFLAG) - build: build_$(BASEIMAGE) modify_composefile: @@ -240,7 +252,6 @@ package_online: modify_composefile @cp NOTICE $(HARBORPKG)/NOTICE @$(TARCMD) -zcvf harbor-online-installer-$(VERSIONTAG).tgz \ --exclude=$(HARBORPKG)/common/db --exclude=$(HARBORPKG)/common/config\ - --exclude=$(HARBORPKG)/common/log --exclude=$(HARBORPKG)/ubuntu \ --exclude=$(HARBORPKG)/photon --exclude=$(HARBORPKG)/kubernetes \ --exclude=$(HARBORPKG)/dev --exclude=$(DOCKERCOMPOSETPLFILENAME) \ --exclude=$(HARBORPKG)/checkenv.sh \ @@ -264,6 +275,7 @@ package_offline: compile build modify_composefile @echo "saving harbor docker image" @$(DOCKERSAVE) -o $(HARBORPKG)/$(DOCKERIMGFILE).$(VERSIONTAG).tgz \ + $(DOCKERIMAGENAME_ADMINSERVER):$(VERSIONTAG) \ $(DOCKERIMAGENAME_UI):$(VERSIONTAG) \ $(DOCKERIMAGENAME_LOG):$(VERSIONTAG) \ $(DOCKERIMAGENAME_DB):$(VERSIONTAG) \ @@ -272,7 +284,6 @@ package_offline: compile build modify_composefile @$(TARCMD) -zcvf harbor-offline-installer-$(VERSIONTAG).tgz \ --exclude=$(HARBORPKG)/common/db --exclude=$(HARBORPKG)/common/config\ - --exclude=$(HARBORPKG)/common/log --exclude=$(HARBORPKG)/ubuntu \ --exclude=$(HARBORPKG)/photon --exclude=$(HARBORPKG)/kubernetes \ --exclude=$(HARBORPKG)/dev --exclude=$(DOCKERCOMPOSETPLFILENAME) \ --exclude=$(HARBORPKG)/checkenv.sh \ @@ -285,6 +296,11 @@ package_offline: compile build modify_composefile pushimage: @echo "pushing harbor images ..." + @$(DOCKERTAG) $(DOCKERIMAGENAME_ADMINSERVER):$(VERSIONTAG) $(REGISTRYSERVER)$(DOCKERIMAGENAME_ADMINSERVER):$(VERSIONTAG) + @$(PUSHSCRIPTPATH)/$(PUSHSCRIPTNAME) $(REGISTRYSERVER)$(DOCKERIMAGENAME_ADMINSERVER):$(VERSIONTAG) \ + $(REGISTRYUSER) $(REGISTRYPASSWORD) $(REGISTRYSERVER) + @$(DOCKERRMIMAGE) $(REGISTRYSERVER)$(DOCKERIMAGENAME_ADMINSERVER):$(VERSIONTAG) + @$(DOCKERTAG) $(DOCKERIMAGENAME_UI):$(VERSIONTAG) $(REGISTRYSERVER)$(DOCKERIMAGENAME_UI):$(VERSIONTAG) @$(PUSHSCRIPTPATH)/$(PUSHSCRIPTNAME) $(REGISTRYSERVER)$(DOCKERIMAGENAME_UI):$(VERSIONTAG) \ $(REGISTRYUSER) $(REGISTRYPASSWORD) $(REGISTRYSERVER) @@ -317,11 +333,13 @@ down: cleanbinary: @echo "cleaning binary..." + @if [ -f $(ADMINSERVERBINARYPATH)/$(ADMINSERVERBINARYNAME) ] ; then rm $(ADMINSERVERBINARYPATH)/$(ADMINSERVERBINARYNAME) ; fi @if [ -f $(UIBINARYPATH)/$(UIBINARYNAME) ] ; then rm $(UIBINARYPATH)/$(UIBINARYNAME) ; fi @if [ -f $(JOBSERVICEBINARYPATH)/$(JOBSERVICEBINARYNAME) ] ; then rm $(JOBSERVICEBINARYPATH)/$(JOBSERVICEBINARYNAME) ; fi cleanimage: @echo "cleaning image for photon..." + - $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_ADMINSERVER):$(VERSIONTAG) - $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_UI):$(VERSIONTAG) - $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_DB):$(VERSIONTAG) - $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_JOBSERVICE):$(VERSIONTAG) diff --git a/docs/compile_guide.md b/docs/compile_guide.md index 76a973647..7459a97d0 100644 --- a/docs/compile_guide.md +++ b/docs/compile_guide.md @@ -127,7 +127,6 @@ compile_ui | compile ui binary compile_jobservice | compile jobservice binary build | build Harbor docker images (default: using build_photon) build_photon | build Harbor docker images from Photon OS base image -build_ubuntu | build Harbor docker images from Ubuntu base image install | compile binaries, build images, prepare specific version of compose file and startup Harbor instance start | startup Harbor instance down | shutdown Harbor instance @@ -143,13 +142,6 @@ cleanpackage | remove online/offline install package #### EXAMPLE: -#### Build Harbor images based on Ubuntu - - ```sh - $ make build -e BASEIMAGE=ubuntu - - ``` - #### Push Harbor images to specific registry server ```sh diff --git a/make/ubuntu/Makefile b/make/ubuntu/Makefile deleted file mode 100644 index 81fac2acd..000000000 --- a/make/ubuntu/Makefile +++ /dev/null @@ -1,79 +0,0 @@ -# Makefile for a harbor project -# -# Targets: -# -# build: build harbor ubuntu images -# clean: clean ui and jobservice harbor images - -# common -SHELL := /bin/bash -BUILDPATH=$(CURDIR) -MAKEPATH=$(BUILDPATH)/make -MAKEDEVPATH=$(MAKEPATH)/dev -SRCPATH=./src -TOOLSPATH=$(BUILDPATH)/tools -CHECKENVCMD=checkenv.sh -DEVFLAG=true - -# docker parameters -DOCKERCMD=$(shell which docker) -DOCKERBUILD=$(DOCKERCMD) build -DOCKERRMIMAGE=$(DOCKERCMD) rmi -DOCKERIMASES=$(DOCKERCMD) images - -# binary -UISOURCECODE=$(SRCPATH)/ui -UIBINARYPATH=$(MAKEDEVPATH)/ui -UIBINARYNAME=harbor_ui -JOBSERVICESOURCECODE=$(SRCPATH)/jobservice -JOBSERVICEBINARYPATH=$(MAKEDEVPATH)/jobservice -JOBSERVICEBINARYNAME=harbor_jobservice - -# ubuntu dockerfile -DOCKERFILEPATH=$(MAKEPATH)/ubuntu -DOCKERFILEPATH_UI=$(DOCKERFILEPATH)/ui -DOCKERFILENAME_UI=Dockerfile -DOCKERIMAGENAME_UI=vmware/harbor-ui -DOCKERFILEPATH_JOBSERVICE=$(DOCKERFILEPATH)/jobservice -DOCKERFILENAME_JOBSERVICE=Dockerfile -DOCKERIMAGENAME_JOBSERVICE=vmware/harbor-jobservice -DOCKERFILEPATH_LOG=$(DOCKERFILEPATH)/log -DOCKERFILENAME_LOG=Dockerfile -DOCKERIMAGENAME_LOG=vmware/harbor-log - -# version prepare -VERSIONFILEPATH=$(SRCPATH)/views/sections -VERSIONFILENAME=header-content.htm -GITCMD=$(shell which git) -GITTAG=$(GITCMD) describe --tags -ifeq ($(DEVFLAG), true) - VERSIONTAG=dev -else - VERSIONTAG=$(shell $(GITTAG)) -endif - -check_environment: - @$(MAKEPATH)/$(CHECKENVCMD) - -build: - @echo "building ui container for ubuntu..." - $(DOCKERBUILD) -f $(DOCKERFILEPATH_UI)/$(DOCKERFILENAME_UI) -t $(DOCKERIMAGENAME_UI):$(VERSIONTAG) . - @echo "Done." - - @echo "building jobservice container for ubuntu..." - $(DOCKERBUILD) -f $(DOCKERFILEPATH_JOBSERVICE)/$(DOCKERFILENAME_JOBSERVICE) -t $(DOCKERIMAGENAME_JOBSERVICE):$(VERSIONTAG) . - @echo "Done." - - @echo "building log container for ubuntu..." - $(DOCKERBUILD) -f $(DOCKERFILEPATH_LOG)/$(DOCKERFILENAME_LOG) -t $(DOCKERIMAGENAME_LOG):$(VERSIONTAG) . - @echo "Done." - -cleanimage: - @echo "cleaning image for ubuntu..." - - $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_UI):$(VERSIONTAG) - - $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_JOBSERVICE):$(VERSIONTAG) - - $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_LOG):$(VERSIONTAG) - -.PHONY: clean -clean: cleanimage - diff --git a/make/ubuntu/jobservice/Dockerfile b/make/ubuntu/jobservice/Dockerfile deleted file mode 100644 index 29814703d..000000000 --- a/make/ubuntu/jobservice/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM library/ubuntu:14.04 - -MAINTAINER jiangd@vmware.com - -RUN mkdir /harbor/ -COPY ./make/dev/jobservice/harbor_jobservice /harbor/ - -RUN chmod u+x /harbor/harbor_jobservice - -WORKDIR /harbor/ -ENTRYPOINT ["/harbor/harbor_jobservice"] diff --git a/make/ubuntu/log/Dockerfile b/make/ubuntu/log/Dockerfile deleted file mode 100644 index 3e1c7520e..000000000 --- a/make/ubuntu/log/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM library/ubuntu:14.04 - -RUN rm /etc/rsyslog.d/* && rm /etc/rsyslog.conf - -ADD make/common/log/rsyslog.conf /etc/rsyslog.conf - -# rotate logs weekly -# notes: file name cannot contain dot, or the script will not run -ADD make/common/log/rotate.sh /etc/cron.weekly/rotate - -# rsyslog configuration file for docker -ADD make/common/log/rsyslog_docker.conf /etc/rsyslog.d/ - -VOLUME /var/log/docker/ - -EXPOSE 514 - -CMD cron && rsyslogd -n diff --git a/make/ubuntu/ui/Dockerfile b/make/ubuntu/ui/Dockerfile deleted file mode 100644 index f44d4fdf9..000000000 --- a/make/ubuntu/ui/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM library/ubuntu:14.04 - -MAINTAINER jiangd@vmware.com - -ENV MYSQL_USR root \ - MYSQL_PWD root \ - REGISTRY_URL localhost:5000 - -RUN mkdir /harbor/ -COPY ./make/dev/ui/harbor_ui /harbor/ - -COPY ./src/ui/views /harbor/views -COPY ./src/ui/static /harbor/static -COPY ./src/favicon.ico /harbor/favicon.ico -COPY ./make/jsminify.sh /tmp/jsminify.sh - -RUN chmod u+x /harbor/harbor_ui \ - && timestamp=`date '+%s'` \ - && /tmp/jsminify.sh /harbor/views/sections/script-include.htm /harbor/static/resources/js/harbor.app.min.$timestamp.js /harbor/ \ - && sed -i "s/harbor\.app\.min\.js/harbor\.app\.min\.$timestamp\.js/g" /harbor/views/sections/script-min-include.htm - -WORKDIR /harbor/ -ENTRYPOINT ["/harbor/harbor_ui"] - -EXPOSE 80 - diff --git a/src/common/dao/config.go b/src/common/dao/config.go index eb700c8af..a0a2ab1fd 100644 --- a/src/common/dao/config.go +++ b/src/common/dao/config.go @@ -27,6 +27,6 @@ func AuthModeCanBeModified() (bool, error) { if err != nil { return false, err } - - return c == 1, nil + // admin and anonymous + return c == 2, nil } diff --git a/src/common/dao/config_test.go b/src/common/dao/config_test.go index a874a6c6e..b8eb43721 100644 --- a/src/common/dao/config_test.go +++ b/src/common/dao/config_test.go @@ -27,7 +27,7 @@ func TestAuthModeCanBeModified(t *testing.T) { t.Fatalf("failed to count users: %v", err) } - if c == 1 { + if c == 2 { flag, err := AuthModeCanBeModified() if err != nil { t.Fatalf("failed to determine whether auth mode can be modified: %v", err)