15 | 研发流程实战:IAM项目是如何进行研发流程管理的?
该思维导图由 AI 生成,仅供参考
开发阶段
代码开发
- 深入了解
- 翻译
- 解释
- 总结
IAM项目通过Makefile高效管理项目研发流程,强调了幂等性和自动化以提高开发效率和保证代码质量。文章介绍了开发阶段的代码开发流程,包括Git Flow工作流、自动生成代码、版权检查、代码格式化、静态代码检查、单元测试和构建等操作。作者还提到了Makefile编写技巧,如自动生成githooks脚本、自动安装工具、以及执行多个操作的快捷方式。在测试阶段,开发人员负责提供测试包和修复测试期间发现的bug。IAM项目的Makefile还包括自动解析help、Options中指定变量值、自动生成CHANGELOG和版本号。这些技巧使得项目管理更加高效,为读者提供了一些可以直接用在实际操作中的经验和技巧。整个研发流程中,开发者需要深度参与的阶段有两个,分别是开发阶段和测试阶段。在开发阶段,开发者完成代码开发之后,通常需要执行生成代码、版权检查、代码格式化、静态代码检查、单元测试、构建等操作。这些操作可以集成在Makefile中,以提高效率并统一操作。IAM项目在编写Makefile时也采用了一些技巧,例如通过解析Makefile文件的注释来完成`make help`命令中的help信息;自动生成CHANGELOG;以及通过gsemver自动生成语义化的版本号。整体而言,本文介绍了IAM项目通过Makefile管理项目研发流程的方法和技巧,为读者提供了一些实用的经验和技巧。
《Go 语言项目开发实战》,新⼈⾸单¥68
全部留言(23)
- 最新
- 精选
- Alery“如果 review 不通过,feature 开发者可以直接在 feature/helloworld 分支修正代码,并 push 到远端的 feature/helloworld 分支,然后通知 reviewers 再次 review。因为有 push 事件发生,所以会触发 GitHub Actions CI 流水线。” 请问修复后的代码是直接执行gith commit --amend还是重新创建一个commit
作者回复: 都可以的。
2021-07-1324 - daz2yy老师好,想问下,测试阶段过了之后,这个特性就能直接上线吗?还是说等大家一起开发完这个迭代内容再上线? 另外,后端开发这里经常会设计 SQL 的变动,一种是数据变动,一种是结构变动,老师这块怎么去管理的呢?还有如何集成到特性研发流程里的呢?
作者回复: 测试完之后就会上线 数据库变动这种运维开发,发布的时候变动,可以写在发布计划里
2021-06-2934 - helloworldrelease分支是从develop分支来的,如果测试直接通过,没有做进一步修改,就不用再合并到develop分支了吧,直接合并到master分支就可以了吧,这样理解对不对呢
作者回复: 如果代码都一样没必要再合,不过再合下没什么大问题,小心总不为过。
2021-06-2923 - Geek_6bdb4e我来回答一下第一个问题:make dependencies会执行dependencies.run,进而执行1. dependencies.packages,这个是对代码本身依赖的packages进行管理,2. dependencies.tools,这个是对项目本身依赖的一些工具进行检查和管理,其中又根据重要等级区分为blocker和critical以及trivial,缺失blocker可能导致CI流程失败,缺失critical可能导致make的一些环节失败,tiivial是可选的工具,缺失没有任何影响。我有一个小问题,这个make dependencies的调用时机是什么时候,发现只有通过make dependencies时候才会调用,为什么不把这条放到make all的依赖项里面呢
作者回复: 调用时机,项目刚clone下来的时候: git clone https://github.com/marmotedu/iam make dependencies 不放在all的原因时,make dependencies 只需要执行一次就可以了。 放在all中,每次都要执行dependencies,会导致make命令很慢
2022-04-0222 - 徐蕴测试完成的tag应该打在master上,还是release分支对应的commit上呢?master上应该还有其它没有测试的功能吧?
作者回复: 好问题。打在release分支上。 master分支上的代码都是充分测试过的代码。不然不让合master的
2021-08-052 - H.xu[going@192 iam]$ make test ===========> Run unit test found packages example (doc.go) and main (example.go) in /home/going/workspace/golang/src/github.com/marmotedu/iam/pkg/rollinglog/example found packages example (doc.go) and main (example.go) in /home/going/workspace/golang/src/github.com/marmotedu/iam/pkg/validator/example no Go files in /home/going/workspace/golang/src/github.com/marmotedu/iam make[1]: *** [scripts/make-rules/golang.mk:81: go.test] Error 1 make: *** [Makefile:108: test] Error 2 这个错误是什么原因的呀
作者回复: 是不是没有执行go work use iam呀
2022-05-02归属地:广东21 - 🌿小毒草如何保证“通过make gen 生成的存量代码要具有幂等性”, 如何测试?
作者回复: 这个要具体情况具体分析。具体,可以添加代码生成功能项的时候,评估测试下
2022-04-271 - 江山未根据符合规范的commit message 生成版本号,这里有个疑问 是一次commit会滚动一次数字吗?因为一个版本可能包含多个feature,feature a有一次commit,feature b有一次commit,但它们都属于这次的版本更新。那会造成 minor version +2 吗
作者回复: 版本号可按以下规则递增: 1. 主版本号(MAJOR):当做了不兼容的 API 修改。例如:带有 BREAKING CHANGE 的 commit。 2. 次版本号(MINOR):当做了向下兼容的功能性新增及修改。这里有个不成文的约定需要你注意,偶数为稳定版本,奇数为开发版本。(feat: xxxx) 3. 修订号(PATCH):当做了向下兼容的问题修正。(fix: xxx)
2021-12-221 - yandongxiao总结:这些步骤应该是开发者经常遇到的。 开发阶段:执行 make all,本地走一遍CI流程。包括,自动生成部分代码或文档、静态代码检查、代码格式化、构建等。 提交阶段:检查 commit message 是否符合 angular 规范;在 push commit / pull request / merge to develop 点,触发 CI 流程。所以,开发者要有在本地跑CI的方法。 测试阶段:按照 Git Flow 的原则,创建出 release 分支,对代码进行测试。
作者回复: 66666
2021-11-271 - lesserror孔老板,能大致说说:IAM 项目的分支命令规则图怎么解读吗? 主要确认一下和我理解的是否相同。
作者回复: valid_branch_regex="^(master|develop)$|(feature|release|hotfix)\/[a-z0-9._-]+$" 这个正则能回答你的问题吗
2021-10-0121