美文网首页
Makefile编写

Makefile编写

作者: scriptllh | 来源:发表于2018-07-24 11:21 被阅读0次

    背景


    1. 以前学的一些东西需要记录下

    Makefile 编写


    1. 以自己实际项目来阐述每个的用法
    2. 目录结构


      15324023686513.jpg
    1. 代码
    
    PROJECT_ROOT?=$(shell pwd)
    //项目名称
    PROJECT_PKG?=ai-exam
    //可执行文件名称
    TARGET=exam
    TARGET_PKG=$(PROJECT_PKG)/cmd
    IMAGE_PREFIX_PRD= 线上环境仓库名称
    IMAGE_PREFIX?=测试环境仓库名称
    TARGET_IMAGE=$(IMAGE_PREFIX)/$(TARGET):0.1.0
    TARGET_IMAGE_PRD=$(IMAGE_PREFIX_PRD)/$(TARGET):0.1.0
    
    // make 执行image-tst
    all:image-tst
    
    
    // 编译项目
    binary:
        CGO_ENABLED=0 go build -ldflags "-X main.version=$(GITVERSION)" \
             -o /go/src/$(PROJECT_PKG)/dist/$(TARGET) $(TARGET_PKG)
    // 进入容器编译项目、并将项目的可执行文件移出
    target:
        mkdir -p $(PROJECT_ROOT)/dist
        docker run --rm -i -v $(PROJECT_ROOT):/go/src/$(PROJECT_PKG) \
          -w /go/src/$(PROJECT_PKG) golang:1.10.2 \
          make binary  GITVERSION=`git describe --tags --always --dirty`
    
    //测试环境打包成docker镜像
    image-tst:target
        temp=`mktemp -d` && \
        cp $(PROJECT_ROOT)/dist/$(TARGET) $$temp && cp Dockerfile $$temp && \
        docker build -t $(TARGET_IMAGE) $$temp && \
        rm -rf $$temp
    push-tst:
        docker push $(TARGET_IMAGE)
    
    //线上环境打包成docker镜像
    image-prd:target
        temp=`mktemp -d` && \
        cp $(PROJECT_ROOT)/dist/$(TARGET) $$temp && cp Dockerfile $$temp && \
        docker build -t $(IMAGE_PREFIX_PRD) $$temp && \
        rm -rf $$temp
    push-prd:
        docker push $(TARGET_IMAGE_PRD)
    
    // make clean
    clean:
        rm -rf dist
    
    .PHONY: image target clean push binary
    

    相关文章

      网友评论

          本文标题:Makefile编写

          本文链接:https://www.haomeiwen.com/subject/pheemftx.html