30 | 一个好的项目自动化应该是什么样子的?
30 | 一个好的项目自动化应该是什么样子的?
讲述:郑晔
时长10:45大小9.82M
基础准备
初见项目
检查
数据库迁移
构建应用
总结时刻
赞 32
提建议
精选留言(25)
- 西西弗与卡夫卡2019-03-20设想过这样的情景(还没实现,打算实践一把):我们新招一名比较熟练的程序员,从TA入职拿到机器,到开发示意代码,再提交SCM,然后CI/CD,再发布到线上交付给用户,整个过程可以在入职当天的午饭之前完成。 这不光要求构建和集成自动化,甚至要求从入职开始的各个环节都能提前准备好,包括机器、开发环境、线上环境等,甚至连示范的需求都要能及时传递给TA。理想情况下,程序员只需要开发好程序,保证质量,提交到SCM即可,其他事情都应该交给机器。 要知道程序员都很贵,越早给用户交付价值越好展开
作者回复: 是这个意思,后面继续谈如何往线上送。
共 2 条评论20 - helloworld2019-05-03对于Gradle的特性了解还是比较少……感觉学习中会有这样的一个现象:对与技术是干什么用的其实是知道的,但是对于细节的把握总是容易遗忘,之前就拿实战Gradle这本书基本上通读了一遍,但是遗忘的确实有点快!我感觉这应该是大多数程序员的通病吧,老师能否给出一些建议?抑或是这种学习方式本身就是低效或者是错误的,谢谢
作者回复: 我的学习方式是,我先要知道构建脚本要做哪些事情,就像这篇文章中写到的这些内容,然后看怎么样用对应工具如何完成,这样看起手册来就有针对性了。
11 - enjoylearning2019-03-27作为一个.net开发人员又看到了一堆java术语,哈哈,不过没关系,不就是配个java 环境么,easy
作者回复: 就喜欢你这种 enjoy learning 的感觉!
8 - 陈斯佳2019-06-12有时候感觉流程比技术更重要。之前有一个经历,就是本来想写个自动化的脚本把在做的事情自动化,但是我的一个同事直接改变了流程,让整个流程更加简化了的。原来脚本所要做的事压根都不存在了。确实像老师所说的,写程序是最高的成本,在着手写程序之前,一切都要考虑清楚。7
- 炫炫2019-03-23老师,我有个疑问。公司最近有个技术老大说不准用lombok这个小工具,一定要我们手写set get?lombok真的那么差吗?
作者回复: 我不清楚具体的情况。我凭一般认知回答一下,有一种可能是,你老大觉得 getter/setter 就不应该写,需要做更好的领域建模;另一种情况是,对于这种生成代码的机制有担心。lombok 本身不是问题,很多人乱用才是问题。
6 - shniu2019-03-20郑老师是否可以分享一下自己在模块划分上面的经验呢?
作者回复: 《敏捷软件开发:原则、实践与模式》、《架构整洁之道》中都有关于模块划分的内容。
6 - 孤星可2019-03-20我一般会在需要专有的构建工具之上 再定义一个 Makrfile 封装 通用的 test build deploy 操作 统一各语言构建工具差异 比如 maven gradle npm
作者回复: 我也做过类似的事情,用 shell 脚本去封装。
3 - shniu2019-03-20自动化在持续交付中得到了非常充分的体现,把频繁的打包、单测、集成测试、部分验收测试、镜像构建和发布、CI环境更新、服务可用性验证等过程全部流水线化,极大的提升了构建发布效率,当然自动化的意义不仅于此;同时,把一切自动化是思维的转变,高效工作的有利工具。
作者回复: 没错,我们下面就会谈到持续交付。
3 - hua1682019-03-20idea没有直接集成gradle吧?我看maven就直接有,好不容易学完maven,就淘汰了😂 有gradle方面的书吗?idea方面的呢?看官方教程? idea是不是用到什么功能再学?还是先看过大概,用到再仔细看?还是最好都看一遍? 目前idea只会一些基础的…
作者回复: 理解错了,IDEA 提供了很好的 Gradle 支持。我的建议是生成 IDE 工程,maven 同样适用。 我学 Gradle 和 IDEA 这种工具都是看官方文档。 IDEA 的学习,别的不说,先熟练适用快捷键。
3 - shniu2019-04-23老师,有个细节问题想咨询一下,现在用Spring boot做一个新项目,由于是前期阶段,短时间内要上线,选择了Spring boot,用业务划分模块的方式来进行开发,就像您文中提到划分模块,现在有个疑问的地方是模块之间会产生一些调用,比如用户的金币数据在用户模块里,游戏模块需要用到某个用户的金币数据,有比较好的做法吗?如果是让游戏模块依赖用户模块,然后注入用户的service,感觉跟之前没什么区别
作者回复: 不要直接依赖于服务,要用接口的方式进行隔离,哪怕是接口和原来服务一模一样,也要隔离。必须明确的一点,这两个业务模块之间是服务相互调用的关系,不是程序库的关系。
共 3 条评论2 - 大力2019-03-24老师之前的文章都是只讲方法论,本篇也有放上具体代码了,要开IDE试试!
作者回复: 赶紧体会一下代码的感觉!
1 - hua1682019-03-20老师,以后用idea导向建立Spring Boot,我是不是把默认的maven改为gradle? 自动化:gitlab CI/CD+jenkins的gradle+docker 其中docker是把脚本放在jenkins,根据tag,如果是稳定版本就用makeFile生成docker镜像 这样可以吧?
作者回复: 我的建议是用构建脚本生成 IDE 工程。
1 - 北天魔狼2019-03-20老师,我想问下PHP有类似构建脚本的工具吗?还没开始学习JAVA
作者回复: 我并不擅长 PHP,你不妨用 PHP build tool 为关键词搜索一下。
1 - hua1682019-03-20In china,很多都是用破解版的……比如网上一堆idea激活码😃
作者回复: 其实现在的开发模式,社区版足够用了,否则,就是开发做重了。
共 2 条评论1 - 跫音2022-05-02好多组件用的是公司maven私有库,如果项目切换成gradle,依赖会有影响吗?
作者回复: 问题不大
- ifelse2022-04-25将工作内容自动化。
- Monday2021-09-06公司要求开发一款数据库表版本管理工具 1、生成两个版本之间的alter脚本 2、查看表的历史版本 3、支持并行版本 类似于Git对代码的管理,我第一反应:业界是否已有类似工具。搜索了下,里面有flyway。然后就自然想到这篇文章提到了该工具。看样子得开始技术撩了。。。 老师有工具推荐么?谢谢展开
作者回复: Flyway 不是挺好的吗?
- williamcai2021-09-06前后端分离,后端接口自动产生
作者回复: 要对自动产生的代码,保持谨慎
- 蓝士钦2020-07-25想问下老师,文章中把项目分成了 zero-bootstrap和zero-identity两个模块。在实际工程中我们有必要遵循这种方式吗,把与业务关系不大的基础的启动工程,或者基础框架单独提取成模块。
作者回复: 这是我习惯的做法,当你有了多个模块,不同的业务模块之间就是隔离的。 遵循与否,可以结合自己项目的实际情况来决定。
- 索旭东2020-03-26上节课刚说要懒惰,不要自动化,现在要自动化,哈哈哈
作者回复: 对啊,能不自动化就不自动化,要自动化的时候,好好自动化。