本节我们分析一下harbor编译的Makefile脚本,在这里并不会详细解释Makefile中每一行代码,而是会挑选几个target
,然后以这些target
作为入口点来介绍一下Harbor的编译流程。
1. Makefile中常用target介绍
2. target instal
一般编译时我们都会简单的使用make install
来完成。下面我们就以install
这个target作为入口点来分析一下Harbor的编译流程:
可以看到其依赖于众多其他的target。
2.1 target compile
在这里,compile
这个target依赖于check_environment
以及compile_golangimage
。
(1) check_environment
check_environment:
@$(MAKEPATH)/$(CHECKENVCMD)
这里是执行make/checkenv.sh
脚本,主要是负责检查golang
环境、docker
环境以及docker-compose
环境。
(2) compile_golangimage
在这里首先会依赖于compile_clarity
:
compile_clarity:
@echo "compiling binary for clarity ui..."
@if [ "$(HTTPPROXY)" != "" ] ; then \
$(DOCKERCMD) run --rm -v $(BUILDPATH)/src:$(CLARITYSEEDPATH) $(CLARITYIMAGE) $(SHELL) $(CLARITYBUILDSCRIPT) -p $(HTTPPROXY); \
else \
$(DOCKERCMD) run --rm -v $(BUILDPATH)/src:$(CLARITYSEEDPATH) $(CLARITYIMAGE) $(SHELL) $(CLARITYBUILDSCRIPT); \
fi
@echo "Done."
因为当前我们并未设置HTTPPROXY
,因此这里执行else
分支。这里主要是运行起vmware/harbor-clarity-ui-builder:1.4.0
这个镜像,然后执行其中的/entrypoint.sh
脚本。
[参考]
-
harbor官网
-
harbor compile