• helloworld
    2021-06-26
    格式化代码、静态代码检查,这种ide或vim都会配置保存时格式化和代码检查,还有必要写在makefile中吗

    作者回复: ide/vim不会进行静态代码检查。 ide/vim的格式化是可配的。而且ide/vim的格式化更多的是用了gofmt -w这种格式化。 这里将格式化代码放在Makefile有个选择: 1. 更丰富,可配置的格式化代码功能,比如:支持golines、goimport、gofmt后面还可以根据需要增加更多 2. 确保每一个开发者用的都是同一种格式化方法(ide/vim的格式化不一定每一个开发者都会陪,更不一定配置的格式化选项是一致的) 将格式化放在Makefile中,可以确保某个动作一定会被执行,并且执行的效果是一致的。

    共 4 条评论
    15
  • yandongxiao
    2021-11-26
    总结:Makefile 是高效项目管理的重要工具,编写高质量的 Makefile,方便你做CI的检查,不至于自己的代码提交上以后,被提示各种不通过(静态代码检查、格式错误、单元测试等)。 要做好 Makefile 的管理,可按照下面的步骤:1. 学习 Makefile 语法;2. 规划 Makefile 要实现的功能;3. 规划 Makefile 结构;4. 善用 Makefile 技巧。 直接拷贝IAM项目的Makefile,也很香。

    作者回复: 直接copy可能更香

    共 2 条评论
    4
  • Vackine
    2021-06-26
    写好一个功能齐全的项目的makefile,然后只对makefile 的各个功能做编排,是不是就可以做到基本的持续发布了?

    作者回复: 持续发布需要CI/CD系统的支持。 写好Makefile只能说方便CI系统直接调用。离CI/C差的还远

    
    4
  • 青苔入镜
    2022-11-08 来自广东
    我有些困惑,iam项目将控制流和数据流放在了一个仓库中,然后使用makefile进行管理,方便我们学习部署,这个我倒是可以理解。 实际企业中是将所有组件也放在一个大仓库中的吗?我所在公司是将项目各个组件分为各个小仓库,开发后进行持续交付和持续部署。我感觉这样也比较合理一些啊,适合现在微服务这样,单个人就维护几个组件。而且控制面和数据面如果部署在一台机器上不会影响数据面的性能吗? 什么场景需要用makefile来管理项目呢?私有化部署的项目吗?我没有想的太明白

    作者回复: 一个应用下面一般分多个微服务,我感觉放在一个Git仓库中好些。 放在一个Git仓库中,但编译出来的是几个二进制文件,所以部署还是独立的。 放在一个仓库中有以下几个优势: 1. 可以统一管理,比如静态代码检查,只需要维护一套就可以了,不用重复开发。 2. 便于阅读,不用去不同代码仓库中不断跳转。 3. 便于包共享,放在同一个仓库中,开发者能够更轻松的发现共享包,并且潜意识中,会去使用公用的包。 最大的优点是:编译统一维护管理,不用每个仓库都实现一套维护方法。 我觉得只要是项目都可以使用makefile管理。

    
    2
  • 兔嘟嘟
    2021-10-26
    请问老师如何看待Makefile已过时的言论? 在知乎上查找相关资料时,发现很多人认为Makefile过时了,只需要学习cmake、bazel之类的,各种说法都有,现在有点晕

    作者回复: 我感觉Makefile没过时,kubernetes等大型项目都是用的Makefile。 Makefile功能强大,应对超大型的项目都没问题,对于一般的项目更不是瓶颈了。

    共 2 条评论
    1
  • Daiver
    2021-09-23
    老师,看到iam项目下面的license 文件中添加了其他库的说明,这个是手动加上去的吗

    作者回复: 也是自动生成的,iam中很多都是通过工具来搞的

    共 2 条评论
    1
  • tiny🌾
    2022-10-30 来自广东
    make lint执行完为什么会报这个错误 make[1]: *** [go.lint] Error 1 make: *** [lint] Error 2

    作者回复: 可以加老师微信再帮你看下哈,这个报错看不出来什么错误

    
    
  • tiny🌾
    2022-10-20 来自广东
    运行make lint报错 ,这个怎么排查 make[1]: *** [go.lint] Error 1 make: *** [lint] Error 2

    作者回复: 加老师微信,现场帮你定位下哈

    
    
  • 左耳朵东
    2022-08-23 来自广东
    .PHONY: format format: tools.verify.golines .PHONY: tools.verify.% tools.verify.%: @if ! which $* &>/dev/null; then $(MAKE) tools.install.$*; fi 这里的 $* 是指 ‘golines’ 还是 ‘tools.verify.golines’ 呢?

    作者回复: tools.verify.golines

    共 2 条评论
    
  • Calvin
    2022-04-18
    对 Windows 系统不友好,实际 CRUD 业务中,更多人是在 Windows 下开发吧(IDE 选 VSCode 或 GoLand)。

    作者回复: 还有些在Mac上开发。 这个教程没必要在Mac、Windows平台下都适配一份。 之所以选择Linux是因为以下原因: 1. 因为Windows、Mac、Linux都有开发者,但该教程只能选择一个平台,所以选择了Linux 2. 将来部署服务是在Linux上部署的,在学习时,在Linux上完成开发部署,也是学习Linux的一个途径,为将来工作中, 在Linux下操作打下基础

    
    